通过本地/远程服务,广播接收器和意图服务的结构问题
-
13-10-2019 - |
题
我正在编写具有标准活动的Android应用程序,但还需要始终监视传入/发出的呼叫和文本。此外,该应用需要每天通知用户一次,而无需开放活动。它通知用户的信息存储在数据库中,因此不需要与活动的通信。我已经研究了一个星期,仍然无法决定如何做到这一点。我的本能告诉我,我需要一项远程服务,该服务具有不断运行的广播接收器,但是我看到的每个远程服务示例都过于复杂。谁能帮助我更好地了解我需要采取哪些步骤?提前致谢。
解决方案
我的本能告诉我,我需要一项远程服务,该服务具有不断运行的广播接收器
不。我这样说,因为:
- 只有一个应用程序,因此不需要“远程”服务
- “具有不断运行的广播接收器的服务”是一个非常糟糕的主意,因为用户会用任务杀手攻击您,即使他们不这样做,Android也会终止您的服务,无论如何都是浪费空间
利用 BroadcastReceivers
在您的清单中注册,以获取可能随时发生的广播,因为即使您的应用程序没有其他运行,它们也将获得控制。使用 IntentService
对于那些人需要的任何“繁重的举重” BroadcastReceivers
, , 作为 BroadcastReceiver
获得控制(在 onReceive()
)在主应用程序线程上,因此应尽可能少的工作。另外,使用 AlarmManager
发出信号a BroadcastReceiver
(或者,可能是您的 IntentService
)提出一个 Notification
对于您每天一次的活动。
另外,请注意,您无法“监视...传出...文本”,而“监视...传入...文本”要求您使用无证件的Android功能。尽管 大概 android.provider.Telephony
不会消失,您只需要意识到所涉及的风险即可。
不隶属于 StackOverflow