我有一个应用程序在后台启动服务。我希望它在进程后停止在此服务上运行的处理程序。如果按下后退按钮,它会正确运行。但是,如果我没有按回按钮,如果应用程序仍在运行,则服务不会停止。我的方法如下:
首先,此方法在服务调用时运行:
public void startChecking() {
handler = new Handler();
runnable = new Runnable() {
@Override
public void run() {
wifiManager = (WifiManager) getSystemService(WIFI_SERVICE);
wifiInfo = wifiManager.getConnectionInfo();
Log.d("ssid", "Checking...");
checkWifi(wifiInfo.getSSID());
handler.postDelayed(this, CHECK_TIME * 1000);
}
};
handler.postDelayed(runnable, CHECK_TIME * 1000);
}
checkWifi 方法:
public void checkWifi(String ssid) {
if (ssid.equals("\"" + SSID + "\"")) {
Log.d("ssid", "SMS sending...");
sendSMS();
stopEverything();
}
}
最后一个。 stopEverything 方法:
public void stopEverything() {
handler.removeCallbacks(runnable);
stopSelf();
stopService(new Intent(this, WifiService.class));
onDestroy();
}
所有这些方法都在服务中。我从我的主班叫这个服务。如何正确停止计时器和服务?
答案 0 :(得分:0)
我通过考虑@ njzk2的评论解决了我的问题。谢谢。