一段时间后停止 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
我的应用程序中有一个由 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