Android:我应该使用BroadcastReceiver vs Messenger与BindService vs Handler

时间:2016-09-23 05:10:45

标签: android broadcastreceiver android-service android-broadcastreceiver android-service-binding

我知道这看起来像是一堆问题。但事实并非如此(尽管我也可能是错的)。

我有一个长时间运行的服务(在一个单独的线程中运行,使用blutooth套接池,每5秒钟对OBD2适配器中的数据进行一次)。
此服务在同一进程中运行,并且是前台服务。

用户通过活动启动此服务。然后它连接到蓝牙设备并开始汇集并将数据保存到SQLiteDataBase。 然后,用户可以最小化活动并执行其他操作 当他返回(如果有的话,他可以通过通知区域按钮停止服务)到应用程序时它会检查服务是否正在运行,如果是,它会启动另一个Activity,显示从OBD2中提取的数据。

我的问题是,我应该使用此可视化活动和服务之间,我指的是建议的或正确的:

  • LocalBroadcast ?这实际上就是我正在使用的。每次服务提取一些数据时,它会在每次拉动时发送带有数据的广播。然后在onReceive方法调用runOnUiThread中更新相应的视图。
  • 信使?据我所知(从未使用过)我应该将Activity从Activity发送到服务(很像Handler),在Service中它应该发送带有数据的Messages。但是从this我会得到RemoteObjectException如果活动被销毁(就像我说的那样,用户可以最小化活动,然后得到GCed)。所以,我可能需要一种方法在每次创建Activity时将Messenger发送到服务,并检查是否可以每次使用服务形式的服务(如果可能的话,我从未使用过这个)。 / LI>
  • BindService ?我打开Activity时是否应该绑定到服务,然后直接从服务中的方法获取数据?但这可能意味着我会在Activity中有另一个线程每次都从服务中获取这些数据,对吗?
  • 处理程序? (暂时我意识到不知道Messenger和Handler之间的区别,应该是“当服务在另一个进程中运行时使用Messenger而另一个是Handler”)

我已经在SO和网络上看到/阅读了很多答案。 但最终我没有看到我的案件的最终答案。但是,如果这只是因为我无法理解,我很抱歉。

提前致谢!

编辑:忘了提,我宁愿只使用支持库和android框架的东西,我还在学习Android,我想了解自己的课程中发生了什么。

0 个答案:

没有答案