Android 安卓,如何保持线程在服务中运行?

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

我已经创建了一个应用程序。它启动一个服务(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,如何使用该捕获重新启动线程

一些老线程提到使用AlarmManager定期“启动服务并执行某些操作,关闭服务”,但我认为这不是一个好主意

请让我知道是否有这样做的典型方法或任何好主意?提前谢谢

更新
事实上,我知道有ClipboardManager,但我知道这一个与android 2.3.4不兼容。此外,我想知道如果我想在服务中创建一个线程,如果它被杀死,我如何重置它?谢谢

在此:,
扩展服务类将
帮助您

完成您要做的事情的最佳方法是使用ClipboardManager类,始终避免执行您自己的“监视”功能,特别是当它已经存在于操作系统中时,并确保操作系统本身是否已经提供了一个BroadcastReceiver来触发您所期望的操作,请查看该类的文档:

与其让线程无所事事地运行,耗尽电池和性能,不如创建一个BroadcastReceiver等待剪贴板操作,使用以下方法:

ClipboardManager.addPrimaryClipChangedListener(ClipboardManager.OnPrimaryClipChangedListener what)
若要获得任何更改的通知


问候

谢谢,更新事实上,我知道有ClipboardManager,但我知道这一个不兼容android 2.3.4。此外,我想知道如果我想在服务中创建一个线程,如果它被杀死,我如何重置它?谢谢