Android 如何检查服务是否正在运行
我想显示服务状态,如果它正在运行或已停止。我正在使用下面的代码,但它在开始服务之前显示“已停止”。服务启动时显示“正在运行”。当它再次停止时,只显示“正在运行”。我是否在设置SharedReference状态时出错。 主要活动Android 如何检查服务是否正在运行,android,Android,我想显示服务状态,如果它正在运行或已停止。我正在使用下面的代码,但它在开始服务之前显示“已停止”。服务启动时显示“正在运行”。当它再次停止时,只显示“正在运行”。我是否在设置SharedReference状态时出错。 主要活动 onCreate() { checkServiceStatus() ; } private void checkServiceStatus() { Toast.makeText(getApplicationContext(),"in en
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();
}
我想这是用来检查互联网连接的
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;
}
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
}
}
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
}
}