停止服务中的处理程序 Android
Stop Handler in service Android
我一直在服务内部使用处理程序class,处理程序负责通过套接字每 5 秒发送一次位置信息。注销时,服务停止但处理程序仍然 运行。
我尝试了所有可能的方法,在我的情况下使用任何布尔变量都不可行,因为我必须重新启动该处理程序。
public Runnable mn_Runnable12 = new Runnable() {
public void run() {
gps = new GPSTracker(LocationService.this);
if (gps.canGetLocation()) {
latString = Double.toString(gps.getLatitude()); // Live
logString = Double.toString(gps.getLongitude());
connection= MyApplication.getInstance().getConnection();
if (connection!=null&&connection.isConnected()) {
sendLocation();
}
}
}
};
这是在 onCreate()
服务内。
T.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
mHandler12.postDelayed(mn_Runnable12, 5000);
}
},
5000,
5000);
我尝试在 onDestroy
服务方法中停止处理程序,服务达到顶峰但处理程序仍在 运行。
@Override
public void onDestroy() {
System.out.println("Location Service Detaroy-----");
if (connection.isConnected()) {
unSubscribe();
}
mHandler12.removeCallbacksAndMessages(null);
mHandler10.removeCallbacksAndMessages(null);
}
您还必须取消 Timer
因为它 运行 间隔一段时间重复。
先取消计时器,然后删除处理程序回调。
T.cancel();
T.purge();
// remove handler here
我一直在服务内部使用处理程序class,处理程序负责通过套接字每 5 秒发送一次位置信息。注销时,服务停止但处理程序仍然 运行。 我尝试了所有可能的方法,在我的情况下使用任何布尔变量都不可行,因为我必须重新启动该处理程序。
public Runnable mn_Runnable12 = new Runnable() {
public void run() {
gps = new GPSTracker(LocationService.this);
if (gps.canGetLocation()) {
latString = Double.toString(gps.getLatitude()); // Live
logString = Double.toString(gps.getLongitude());
connection= MyApplication.getInstance().getConnection();
if (connection!=null&&connection.isConnected()) {
sendLocation();
}
}
}
};
这是在 onCreate()
服务内。
T.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
mHandler12.postDelayed(mn_Runnable12, 5000);
}
},
5000,
5000);
我尝试在 onDestroy
服务方法中停止处理程序,服务达到顶峰但处理程序仍在 运行。
@Override
public void onDestroy() {
System.out.println("Location Service Detaroy-----");
if (connection.isConnected()) {
unSubscribe();
}
mHandler12.removeCallbacksAndMessages(null);
mHandler10.removeCallbacksAndMessages(null);
}
您还必须取消 Timer
因为它 运行 间隔一段时间重复。
先取消计时器,然后删除处理程序回调。
T.cancel();
T.purge();
// remove handler here