停止服务中的处理程序 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