android服务需要在一段时间后停止

时间:2012-07-16 11:44:32

标签: android service

我正在使用Service运行AlarmManagerService运行正常,我手动停止Service(点击Button),但我需要在某个时间后停止Service(可能是10秒) 。我可以使用this.stopSelf();,但如何在一段时间后调用this.stopSelf();

5 个答案:

答案 0 :(得分:3)

这可以使用timertimerTask轻松完成。

我仍然不知道为什么没有提出这个答案,而是提供的答案没有提供直接和简单的解决方案。

在服务子类中,全局创建它们(您可以不全局创建它们,但可能会遇到问题)

//TimerTask that will cause the run() runnable to happen.
TimerTask myTask = new TimerTask()
{
    public void run()
    {
        stopSelf();
    }
};


//Timer that will make the runnable run.
Timer myTimer = new Timer();

//the amount of time after which you want to stop the service
private final long INTERVAL = 5000; // I choose 5 seconds

现在在服务的onCreate()内,执行以下操作:

myTimer.schedule(myTask, INTERVAL);

这应该在5秒后停止服务。

答案 1 :(得分:2)

您可以考虑使用IntentService吗?当它没有工作时它将被停止,所以你不需要自己管理它的状态。

答案 2 :(得分:1)

在服务中使用Handler postDelayed 方法来完成它。例如:

new Handler().postDelayed(new Runnable() {
@Override
    public void run() {
        stopSelf();
    }
}, 10000);    //will stop service after 10 seconds

答案 3 :(得分:0)

  1. 创建Intent以启动Service。将action设置为自定义操作,例如"com.yourapp.action.stopservice"
  2. 使用AlarmManager,启动Intent以启动Service(无论您现在正在做什么)。如果已经运行,则会将onStartCommand()传递给Service
  3. onStartCommand()中,查看来电action的{​​{1}}。如果Intent,请使用action.equals("com.yourapp.action.stopservice")停止Service

答案 4 :(得分:0)

Kotlin 中,您可以使用此代码在 onStartCommand() 方法中停止服务:

 Handler(Looper.getMainLooper()).postDelayed({ stopSelf() }, 10000)