【问题标题】:Java android killed service when application is killed or close当应用程序被杀死或关闭时Java android杀死服务
【发布时间】:2018-03-18 03:11:16
【问题描述】:

我想在我关闭(终止)我的应用程序时终止我的服务:这是我的服务:

在这项服务中,我有一个异步任务,它将像这样重新开始工作:

   TimerTask myTimerTask = new TimerTask() {

                @Override
                public void run() {
                    connectTask3 = new connectTask3();
                    connectTask3.execute();
                }

            };
            Timer timer = new Timer();
            timer.schedule(myTimerTask, 2000);

当应用程序关闭时如何在 asyntask 中停止此服务?

【问题讨论】:

    标签: java android android-studio android-activity service


    【解决方案1】:

    如果你想停止异步任务,你可以使用asyncTask.cancel(true/false);

    true指定android系统停止这个服务,即使它已经启动了,

    false 指定android系统不停止这个已经启动的任务。


    @Override
    public void onDestroy() {
        super.onDestroy();
    
        timer.cancel();
        connectTask3.cancel(true);
    
    }
    

    如果您想在活动失去交互时停止此服务,请将其写入onPause() 要么 如果您想在活动销毁时取消,请在onDestroy() 中调用它

    更多详情请check AsyncTask

    【讨论】:

    • 虽然 OP 在问题中写了关于服务的内容,但实际上问题与服务无关,而是与计时器任务有关
    • 他使用的不是服务,而是异步任务和定时器任务。
    【解决方案2】:
    @Override
    public void onDestroy() {
        timer.cancel(true);   //stops timerTask
        connectTask3.cancel(); //stops asynctask
        super.onDestroy();
    }
    

    【讨论】:

      【解决方案3】:

      在清单中添加以下内容

      <service android:name="service" android:stopWithTask="true"/>
      

      stopwithtask 将在应用关闭或终止时停止服务

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-11-17
        • 1970-01-01
        • 2015-08-12
        • 2018-06-08
        • 2013-09-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多