【问题标题】:how to force stop android service programmatically [duplicate]如何以编程方式强制停止android服务[重复]
【发布时间】:2019-05-02 19:51:34
【问题描述】:

我让两个按钮一个来启动服务,另一个来停止它 当我按下停止按钮时通知我服务已停止但实际上它仍在后台工作 我在我的onStartCommand() 方法中使用计时器,每秒重复一次 是这个原因吗..?以及如何强制立即停止服务。

public int onStartCommand(Intent intent, int flags, int startId) {
    Toast.makeText(getApplicationContext(),"start..",Toast.LENGTH_SHORT).show();
    new Timer().scheduleAtFixedRate(new TimerTask() {

        private Handler handler = new Handler(){
            @Override
            public void dispatchMessage(Message msg) {
                Toast.makeText(getApplicationContext(),""+(counter+=1),Toast.LENGTH_SHORT).show();
            }
        };
        @Override
        public void run() {
            handler.sendEmptyMessage(0);
        }
    },0,1000);


    return START_STICKY;
}

`

还有我的按钮操作:-

public void btnStart(View view){

    startService(new Intent(MainActivity.this,MyService.class));

}
public void btnStop(View view){

   stopService(new Intent(MainActivity.this,MyService.class));
}

我找到了答案..! 答案是必须在 onDestroy 方法中取消 timer 和 timerTask

【问题讨论】:

  • 请输入您的服务类以及您如何调用您的服务,以便我们进行故障排除:)
  • 我更新问题..
  • 我在问题本身中找到了答案..答案是 - 必须在 onDestroy 方法中取消 Timer 和 TimerTask 我测试它并且效果很好

标签: java android android-service


【解决方案1】:

下面是如何停止服务的简单描述:

stopSelf() 用于始终停止当前服务。

stopSelf(int startId) 也用于停止当前服务,但前提是 startId 是上次启动服务时指定的 ID。

stopService(Intent service)是用来停止服务的,但要从外部停止服务。

访问link了解更多详情

请更换

return START_STICKY;

由

return START_NOT_STICKY;

区别:

START_STICKY

系统会在你的服务被杀死后尝试重新创建它

START_NOT_STICKY

系统在服务被杀死后不会尝试重新创建您的服务

【讨论】:

  • 我使用它但无法正常工作...计时器和计时器任务中的问题您必须在销毁方法中取消它们
  • 请检查我的编辑
  • 感谢您的回答..我尝试了,但在 Timer 和 TimerTask 中也没有解决问题,您应该首先在 onDestroy() 方法中取消他们的任务,它会停止
  • 那么你为什么不在你的服务中创建一个停止计时器的函数,然后在你停止服务后调用它呢?
  • 我只是从其他类似的问题中知道,我编辑了我的问题。我想当我停止服务时,它会停止所有任务,包括计时器和 timerTask
【解决方案2】:

如果你打算停止你启动的服务,你应该调用 stopService(Intent) 例如:

Intent intent = new Intent(MainActivity.this, YourService.class);
stopService(intent);

【讨论】:

  • 我用这个鳕鱼,但还在运行
  • 你应该重写 onDestory() 方法并停止你的计时器。
猜你喜欢
  • 1970-01-01
  • 2023-04-06
  • 2020-08-04
  • 1970-01-01
  • 1970-01-01
  • 2011-07-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多