我有一个名为PACKAGE_ADDED
的广播接收器,另一个叫BOOT_COMPLETED
的广播接收器。 bootcompleted
广播接收器启动我的服务。当安装新应用程序时,我想向我的服务发送消息。我想到的第一个解决方案是再次启动服务
intent.setAction("NEW_APP_INSTALLED");
startService(intent);
不停止服务并检查intent.getAction()
方法中的service.onStart()
值。如果结果为NEW_APP_INSTALLED
,请拨打newAppInstalled()
。我认为这不是一个优雅的解决方案。
重复启动服务有问题吗?当我的活动在获取数据时通过ipc(aidl)
绑定到它并且新应用安装的广播接收器再次启动时会发生什么?最后,解决我问题的最佳方法是什么?
答案 0 :(得分:2)
一次又一次地启动服务问题?
最后解决问题的最佳方法是什么?
您可以在已经运行的服务上调用startService
。您可以按照建议的方式执行此操作,也可以使用两种不同的服务(一种用于启动,一种用于new_app),或者您可以在服务启动后在服务中注册BroadcastReceiver
,但这样做不会有效如果您尝试向其发送消息并且它尚未运行,则它将无法收到消息..我更喜欢您建议的一项服务并使用startService
。
当我的活动通过ipc(AIDL)获取数据绑定它时会发生什么 和新的应用程序安装广播接收器再次启动它?
嗯,我对AIDL一无所知。 This可能有所帮助。该页面确实声明“大多数应用程序不应使用AIDL来创建绑定服务”。这是因为它需要多线程并使其更复杂。
如果我没有回答你的满意,请告诉我 - 虽然我不能特别详细说明AIDL,因为我对此一无所知。