启动/停止应用程序可见部分的事件

时间:2016-03-13 10:06:37

标签: android android-activity

Stackoveflow!

我有一个带有sticky后台服务和可见部分的应用程序,由几个活动组成。

我需要跟踪可见部分的开始和停止(所有活动)。 例如:

  • 当用户启动MainActivity时,Service会收到LocalBroadcast,告诉它启动某些内容
  • 当用户旋转屏幕时,服务必须接收任何内容。
  • 当用户转到SecondActivity时,服务必须再次接收任何内容。
  • 当用户关闭所有活动时,服务会获得LocalBroadcast告诉停止

如果我使用ActivityonCreateonDestroy,或onStartonStop,我会收到与单个活动的生命周期相关的事件。我也得到与屏幕旋转相关的事件。

我也不能使用ApplicationonCreateonTerminate因为服务在后台运行而不会触发。

我需要跟踪整个应用程序的实际启动和停止,除了服务。

1 个答案:

答案 0 :(得分:1)

请参阅:http://developer.android.com/guide/components/bound-services.html

  

当最后一个客户端从服务解除绑定时,系统会销毁   服务(除非服务也是由startService()启动的)。

因此,每个Activity应该bind()服务onCreate,以及unbind() / onStop

中的onDestroy

现在要解决方向更改问题,您可以在isFinishing / onStop回调中检查onDestory (见:How to distinguish between orientation change and leaving application android

并在onSaveInstanceState回调中添加了一些标志,以便在下面的onCreate中检查是否存在该标志,并相应地采取行动(刷新绑定,或者避免调用{{1}再次)