2013-04-15 127 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 
     } 

} 
相關問題