android – 对服务执行长时间运行的操作
作者:互联网
我正在构建一个具有服务的应用程序.我知道所有应用程序组件都在同一个UI进程中运行,至少你在清单中指定它.所以为了避免ANR的消息,我有三种方法.
>在清单中指定服务以在单独的进程中运行
android:process =“:remote”但是我已经阅读了一些StackOverflow的帖子
说它不是一个好主意,因为它消耗了大量的电池和CPU处理.
我真的很尊重,因为那些帖子来自可信赖的人.
>使用IntentService.这可能是一个很好的出路.但我需要我的服务运行即使
活动不可见.因为我需要服务不断检查新服务的Web服务
来自其他用户的消息并通知通知.是否可以使用
一个IntentService?这是一个优雅的解决方案.
>使用本地服务.只是从清单文件中删除android:process =“:remote”属性.
但我得到一些…… OnMainThreadException错误.这意味着我需要创建一个特殊的
线程执行那些长时间运行的操作或使用AsyncTask,
也许有另一种方法可以做到这一点.请告诉我,如何对服务执行长期运行操作.真的很有必要.
谢谢.
解决方法:
首先,我们接受有两个部分:活动部分(网络)和下一个活动部分之前的一些睡眠部分.我认为您可以使用普通的本地IntentService来处理活动部件.完成后,每个活动部件都应使用AlarmManager重新安排下一个活动部件.这种方法可确保您的应用在睡眠部分时不会消耗资源.你是对的 – 一旦IntentService得到一个结果呈现给用户,它就可以使用Notification.
标签:android-handler,android,worker-thread 来源: https://codeday.me/bug/20191002/1845191.html