在Android中运行背景循环

时间:2015-08-02 16:29:23

标签: android loops background-process

我有一个每两秒读取Android剪贴板内容的函数,并与远程服务器通信所有更改。

这在应用程序打开时工作正常。但是我需要能够在关闭应用程序后继续记录剪贴板更改。

所以我尝试了IntentService,但它并不欣赏长循环。

如何在后台运行无限循环?

3 个答案:

答案 0 :(得分:2)

  

我有一个每两秒读取Android剪贴板内容的函数,并与远程服务器通信所有更改。

轮询?你这样做非常错了。您应该使用OnPrimaryClipChangedListener代替。

修改

  

与远程服务器通信所有更改。

我刚刚意识到你基本上在那里做了一些不好的事情,我有点怀疑你的用户是否意识到你在监视他们?您的应用是否在Google Play中,如果是,那么您的应用套件ID是什么?

答案 1 :(得分:1)

应该使用

package.json来处理来自其他应用程序组件的单个“请求”。

使用started service更适合您描述的问题。开始服务运行,直到您手动停止它或直到系统资源耗尽并终止整个过程。

使用IntentService作为START_STICKY方法的返回值,以便在系统终止时自动重新启动它。

如果您也使用onStartCommand() BroadcastReceiver启动它,则会在设备启动后启动操作服务。

答案 2 :(得分:0)

通过在Service中返回START_STICKY来实施onStartCommand并将其设为粘性(请参阅Documentation):

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
    // We want this service to continue running until it is explicitly
    // stopped, so return sticky.
    return START_STICKY;
}