2013-04-15 122 views
3

我想显示服务状态,如果它正在运行或停止。我正在使用下面的代码,但在启动服务之前显示“已停止”。当服务启动时,它显示“正在运行”。当它再次停止时,它仅显示“运行”。我在设置sharedPreference状态时犯了什么错误。 在mainActivity如何检查服务是否正在运行

onCreate() 
    { 
    checkServiceStatus() ; 
    } 

    private void checkServiceStatus() 
{ 
    Toast.makeText(getApplicationContext(),"in enableControls", Toast.LENGTH_LONG).show(); 
    boolean isServiceRunning = AppSettings.getServiceRunning(this);  
    if (isServiceRunning) 
    { 
     Toast.makeText(getApplicationContext(),"service running", Toast.LENGTH_LONG).show();  
    } 
    else 
    { 
     Toast.makeText(getApplicationContext(),"service stopped", Toast.LENGTH_LONG).show();   
    } 
} 


    public class AppSettings 
    { 
public static final String SERVICE_STATE = "isServiceRunning"; 
public static boolean getServiceRunning(Context context){ 
     SharedPreferences pref = context.getSharedPreferences(GPSLOGGER_PREF_NAME, 0); 

     return pref.getBoolean(SERVICE_STATE, false); 
} 

public static void setServiceRunning(Context context, boolean isRunning){ 
     SharedPreferences pref = context.getSharedPreferences(GPSLOGGER_PREF_NAME, 0); 
     SharedPreferences.Editor editor = pref.edit(); 

     editor.putBoolean(SERVICE_STATE, isRunning); 
     editor.commit(); 
} 
+0

检查这个http://stackoverflow.com/questions/600207/android-check-if-a-service-is-running – 2013-04-15 10:02:59

回答

-4
public static boolean CheckServiceConnectivity(Context mContext) 
    { 
     ConnectivityManager connec = (ConnectivityManager) mContext.getSystemService(Context.CONNECTIVITY_SERVICE); 

     if (connec.getNetworkInfo(0).getState() == NetworkInfo.State.CONNECTED 
       || connec.getNetworkInfo(1).getState() == NetworkInfo.State.CONNECTED) 
      return true; 

     return false; 

    } 
+4

我想这是用于检查Internet连接 – Manasi

10
public class Receiver extends BroadcastReceiver {  
    @Override 
    public void onReceive(Context context, Intent intent) {  
     ActivityManager manager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); 
     for (RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) { 
      if (YourService.class.getName().equals(service.service.getClassName())) { 
       //your service is running 
      } 
     } 
     //your service is not running 
    } 
} 
3
ActivityManager manager = (ActivityManager)context. getSystemService(Context.ACTIVITY_SERVICE);//use context received in broadcastreceiver 

for (RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) 
{ 

    if (MyService.class.getName().equals(service.service.getClassName())) { 
         //running 
     } 
    else{ 
      //not running 
     } 

} 
相关问题