意图ACTION_BOOT_COMPLETED重新启动app杀死另一个正在运行的实例

时间:2016-10-31 17:59:03

标签: android android-intent android-broadcast

我正在创建一个需要接收[Date].[Date].currentmember的库。该库在应用程序活动的Intent.ACTION_BOOT_COMPLETED方法中初始化,该方法扩展了应用程序类。

在启动事件之后,当启动事件完成时,应用程序接收广播,然后开始正常处理内容。

在某些情况下,我的图书馆需要创建一些警报。根据SDK版本,我使用onCreatesetExactAndAllowWhileIdle,并设置setExact类的方法。

如果我设置了一个闹钟而不是关闭手机(某些闹钟时间已经过去),那么当启动手机时,已启动的闹钟会启动我的应用程序。这启动了一个方法,库开始做一些事情。

在某些时候,该应用会收到AlarmManager。此时,之前的应用程序被终止(并且库停止执行它正在运行的任务)并创建了一个新应用程序。 我可以在进程和线程id的字段中的日志消息中看到这一点。

这是logcat的一个例子。应用程序类调用Intent.ACTION_BOOT_COMPLETED来设置我的库。收到启动意图后,将启动一个新进程。

Init()

我应该如何处理警报,以便在10-31 17:13:57.545 3597-3597 D/App: Init() called // does stuff 10-31 17:14:00.500 3597-3597 D/App: BootReceiver Boot broadcast received. Action =[android.intent.action.BOOT_COMPLETED] 10-31 17:14:17.135 5243-5243 D/App: Init() called // Restarts my library setup and tasks. Some of them are lost because they were started the the process triggered by the elapsed alarm. 事件后不会终止进程?

修改

BOOT_COMPLETED

清单接收者:

11-01 16:27:44.774 1515-3949 I/ActivityManager: Start proc 4580:com.lib.test.app/u0a306 for broadcast com.lib.test.app/com.test.BootReceiver
....
11-01 16:27:50.194 1515-1621 I/ActivityManager: Killing 4580:com.lib.test.app/u0a306 (adj 906): empty #17
...
11-01 16:28:25.715 1515-5709 I/ActivityManager: Start proc 8413:com.test.app/u0a306 for broadcast com.lib.test.app/com.test.NetworkReceiver

0 个答案:

没有答案