一段时间后停止 Android 服务?

Stop Android Service after some time?

我的应用程序中有一个由 Widget 启动的后台服务。当用户启动服务时,它将 运行 直到用户停止它。如果用户忘记停止它,这会耗尽电池电量。 我想添加一些安全开关。在 5 或 10 分钟后停止服务。做这个的最好方式是什么?

请注意,除非您的 Service 正在积极处理某些事情或持有唤醒锁,否则它不会消耗更多电池。 Service 可以处于 "running" 状态但不执行任何操作。 Android 框架是事件驱动的,因此除非您仍在执行 onStartCommand() 或您生成的后台线程,否则您不会消耗 CPU 或电池。话虽如此,如果您确实需要在特定时间后关闭 Service,请使用通过 AlarmManager.

设置的闹钟

您可以实施处理程序以在特定延迟后停止服务:

private Handler handler = new Handler() {

    @Override
    public void handleMessage(Message msg) {
        switch (msg.what) {
            case 1: {
                stopSelf();
            }break;
        }
    }
}

并在下方提供您的延迟时间:

handler.sendEmptyMessageDelayed(1, 300000);//add your delay here