我创建了一个应用程序。它启动一个服务(onStartCommand 类型)。它创建了一个线程来监视剪贴板:
private class MonitorTask extends Thread {
@Override
public void run() {
mKeepRunning = true;
while (true) {
doTask(); //-this function uses the toast to show the string in clipboard
try {
Thread.sleep(300);
} catch (InterruptedException ignored) {
}
if (!mKeepRunning) {
break;
}
}
}
我发现经过一段时间后,服务仍然存在(根据正在运行的服务管理器),但是线程消失了。如何让线程永远运行,直到用户关闭应用程序。
我想这可能是 InterruptedException,我怎样才能使用那个 catch 来重新启动线程?
一些旧线程提到使用 AlarmManager 定期“启动服务并做某事,关闭服务”,但我认为这不是一个好主意?
请让我知道是否有这样做的典型方法或任何好主意?提前致谢。
更新事实上,我知道有 ClipboardManager,但我知道这个不兼容 android 2.3.4。此外,我想知道我是否想在服务中创建一个线程,如果它被杀死了我该如何重置它?谢谢