本地/远程服务,广播接收器和意图服务的结构问题

时间:2010-12-25 23:58:18

标签: android android-intent android-service android-lifecycle

我正在编写一个具有标准活动的Android应用程序,但也需要始终监视传入/传出呼叫和文本。此外,应用程序需要每天一次通知用户信息而不打开活动。它通知用户的信息存储在数据库中,因此不需要与活动进行通信。我已经研究了一个星期,仍然无法决定如何去做这件事。我的直觉告诉我,我需要一个具有持续运行的广播接收器的远程服务,但我看到的每个远程服务示例都过于复杂。谁能帮助我更好地了解我需要采取的步骤?提前谢谢。

1 个答案:

答案 0 :(得分:2)

  

我的直觉告诉我,我需要一个具有持续运行的广播接收器的远程服务

嗯,不。我这样说,因为:

  • 只有一个应用程序,因此不需要“远程”服务
  • “具有持续运行的广播接收器的服务”是一个非常糟糕的主意,因为用户会使用任务杀手攻击你,即使他们不这样做,Android也会最终终止你的服务,因为这是浪费空间

使用您的清单中注册的BroadcastReceivers可以随时进行广播,因为即使您的应用程序没有其他任何内容正在运行,它们也可以获得控制权。使用IntentService执行BroadcastReceivers所需的任何“繁重工作”,因为BroadcastReceiver获取主应用程序线程上的控件(在onReceive()中),因此应该执行尽可能少的工作。另外,使用AlarmManagerBroadcastReceiver发出信号(或者,可能是您的IntentService),为每日一次的活动提出Notification

此外,请注意,您无法“监控...传出...文本”,而“监控...传入......文本”则要求您使用无证件的功能Android系统。虽然可能 android.provider.Telephony不会消失,但您只需要了解所涉及的风险。