Android 安卓,如何保持线程在服务中运行?
我已经创建了一个应用程序。它启动一个服务(onStartCommand类型)。 它将创建一个线程,该线程将继续监视剪贴板:Android 安卓,如何保持线程在服务中运行?,android,multithreading,service,Android,Multithreading,Service,我已经创建了一个应用程序。它启动一个服务(onStartCommand类型)。 它将创建一个线程,该线程将继续监视剪贴板: private class MonitorTask extends Thread { @Override public void run() { mKeepRunning = true; while (true) { doTask(); //-this function uses the toast t
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,如何使用该捕获重新启动线程
一些老线程提到使用AlarmManager定期“启动服务并执行某些操作,关闭服务”,但我认为这不是一个好主意
请让我知道是否有这样做的典型方法或任何好主意?提前谢谢
更新
事实上,我知道有ClipboardManager,但我知道这一个与android 2.3.4不兼容。此外,我想知道如果我想在服务中创建一个线程,如果它被杀死,我如何重置它?谢谢在此:,
扩展服务类将
帮助您 完成您要做的事情的最佳方法是使用ClipboardManager类,始终避免执行您自己的“监视”功能,特别是当它已经存在于操作系统中时,并确保操作系统本身是否已经提供了一个BroadcastReceiver来触发您所期望的操作,请查看该类的文档:
与其让线程无所事事地运行,耗尽电池和性能,不如创建一个BroadcastReceiver等待剪贴板操作,使用以下方法:
ClipboardManager.addPrimaryClipChangedListener(ClipboardManager.OnPrimaryClipChangedListener what)
若要获得任何更改的通知
问候 谢谢,更新事实上,我知道有ClipboardManager,但我知道这一个不兼容android 2.3.4。此外,我想知道如果我想在服务中创建一个线程,如果它被杀死,我如何重置它?谢谢