Time required to restart Android service after enforced destruction

When I use an application such as โ€œGo Power Masterโ€ to force kill the services running on my Android phone, not all services restart with the same delay. Why is this and how to reduce the time it takes to restart my service?

Facebook is a great example. The following is his conclusion to LogCat when he was killed 3 times in a row. Note the restart time in bold: 14992ms, 5000ms, 14963ms.

My service is not handled so well. The following is his conclusion to LogCat when he was killed 3 times in a row. Note the much longer reboot time in bold: 23358ms, 93432ms, 373728ms.

The full source code for this project is on GitHub. https://github.com/ccoffey/NUIMWiFi

Facebook LogCat

05-10 14: 09: 33.381: I / ActivityManager (192): Killing proc 7280: com.facebook.katana / 10077: remove background 05-10 14: 09: 33.381: W / ActivityManager (192): Planning to restart a crashed service com.facebook.katana / .service.MediaUploadService at 14992ms 05-10 14: 09: 48.412: I / ActivityManager (192): Run proc com.facebook.katana for the service com.facebook.katana / .service.MediaUploadService: pid = 7847 uid = 10077 gids = {3003, 1006, 1015} 05-10 14: 09: 48.568: I / ActivityThread (7847): Pub com.facebook.katana.provider.LoggingProvider: com.facebook.katana.provider.LoggingProvider 05 -10 14: 09: 48.592: I / ActivityThread (7847): Pub com.facebook.katana.provider.KeyValueProvider: com.facebook.katana.provider.KeyValueProvider 05-10 14: 09: 48.592: I / ActivityThread (7847) : Pub com.facebook.katana.provider.CacheProvider: com.facebook.katana.provider.CacheProvider 05-10 14: 09: 48.592: I / ActivityThread (7847): Pub com.facebook.katana.provider.MailboxProvider: com.facebook.katana.provider.MailboxProvider 05-10 14: 09: 48.599: I / ActivityThread (7847): Pub com.facebook.katana.provider.UserStatusesProvider: com.facebook. katana.provider.UserStatusesProvider 05-10 14: 09: 48.599: I / ActivityThread (7847): Pub com.facebook.katana.provider.EventsProvider: com.facebook.katana.provider.EventsProvider 05-10 14: 09: 48.607: I / ActivityThread (7847): Pub com.facebook.katana.provider.NotificationsProvider: com.facebook.katana.provider.NotificationsProvider 05-10 14: 09: 48.607: I / ActivityThread (7847): Pub com.facebook.katana. provider.UserValuesProvider: com.facebook.katana.provider.UserValuesProvider 05-10 14: 09: 48.607: I / ActivityThread (7847): Pub com.facebook.katana.provider.PagesProvider: com.facebook.katana.provider.PagesProvider 05 -10 14: 09: 48.607: I / ActivityThread (7847): Pub com.facebook.katana.provider.MobileEventLogProvider: com.facebook.katana.provider.MobileEventLogProvider 05-10 14: 09 : 48.607: I / ActivityThread (7847): Pub com.facebook.katana.provider.PushNotificationsProvider: com.facebook.katana.provider.PushNotificationsProvider 05-10 14: 09: 48.615: I / ActivityThread (7847): Pub com.facebook .katana.provider.PhotosProvider: com.facebook.katana.provider.PhotosProvider 05-10 14: 09: 48.615: I / ActivityThread (7847): Pub com.facebook.katana.provider.ConnectionsProvider: com.facebook.katana.provider .ConnectionsProvider 05-10 14: 09: 48.623: I / ActivityThread (7847): Pub com.facebook.orca.notify.FbandroidMessagesForegroundProvider: com.facebook.orca.notify.FbandroidMessagesForegroundProvider 05-10 14: 09: 48.639: D / ACRA (7847): ACRA is enabled for com.facebook.katana, intializing ... 05-10 14: 09: 48.654: D / ACRA (7847): Search for error files in /data/data/com.facebook.katana/app_acra- reports 05-10 14: 09: 48.701: W / nalizableReferenceQueue (7847): at com.facebook.orca.inject.binder.AnnotatedBindingBuilderImpl.a (AnnotatedBindingBuilderImpl.java:22) 05-10 14: 09: 48.701: W / nalizableReferenceQueue (7847): at com.facebook.orca.app.FbBaseModule.a (FbBaseModule.java:73) 05-10 14: 09: 48.701: W / nalizableReferenceQueue (7847) : at com.facebook.orca.inject.AbstractModule.a (AbstractModule.java:19) 05-10 14: 09: 48.701: W / nalizableReferenceQueue (7847): at com.facebook.orca.inject.FbInjectorImpl.a (FbInjectorImpl .java: 61) 05-10 14: 09: 48.701: W / nalizableReferenceQueue (7847): at com.facebook.orca.inject.FbInjectorImpl. (FbInjectorImpl.java:41) 05-10 14: 09: 48.701: W / nalizableReferenceQueue (7847): at com.facebook.orca.inject.FbInjector.a (FbInjector.java:40) 05-10 14: 09: 48.701 : W / nalizableReferenceQueue (7847): at com.facebook.katana.FacebookApplication.onCreate (FacebookApplication.java:75) 05-10 14: 09: 48.928: I / SqliteDatabaseCpp (7847): sqlite returned: error code = 21, msg = misuse in line 105099 from [8609a15dfa], db = / data / data / com.facebook.katana / databases / prefs_db 05-10 14: 09: 53.810: I / ActivityManager (192): Killing proc 7847: com.facebook .katana / 10077: kill the background 05-10 14: 09: 53.810: W / ActivityManager (192): Planning to restart the broken service com.facebook.katana / .service.MediaUploadService in 5000 ms 05-10 14: 09: 58.842: I / ActivityManager (192): Run proc com.facebook.katana for com.facebook.katana / .service.MediaUploadService: pid = 7890 uid = 10077 gids = {3003, 1006, 1015} 05-10 14: 09: 59.053: I / ActivityThread (7890): Pub com.facebook.katana.provider.LoggingProvider: com.facebook.katana.provider.LoggingProvider 05 -10 14: 09: 59.060: I / ActivityThread (7890): Pub com.facebook.katana.provider.KeyValueProvider: com.facebook.katana.provider.KeyValueProvider 05-10 14: 09: 59.060: I / ActivityThread (7890) : Pub com.facebook.katana.provider.CacheProvider: com.facebook.katana.provider.CacheProvider 05-10 14: 09: 59.076: I / ActivityThread (7890): Pub com.facebook.katana.provider.MailboxProvider: com. facebook.katana.provider.MailboxProvider 05-10 14: 09: 59.076: I / ActivityThread (7890): Pub com.facebook.katana.provider.UserStatusesProvider: com.facebook.katana.provider.UserStatusesProvider 05-10 14: 09: 59.076: I / ActivityThread (7890): Pub com.facebook.katana.provider.EventsProvider: com.facebook.katana.provider.EventsProvider 05-10 14: 09: 59.076: I / ActivityThread (7890): Pub com.facebook. katana.provider.Notif icationsProvider: com.facebook.katana.provider.NotificationsProvider 05-10 14: 09: 59.076: I / ActivityThread (7890): Pub com.facebook.katana.provider.UserValuesProvider: com.facebook.katana.provider.UserValuesProvider 05-10 14: 09: 59.076: I / ActivityThread (7890): Pub com.facebook.katana.provider.PagesProvider: com.facebook.katana.provider.PagesProvider 05-10 14: 09: 59.084: I / ActivityThread (7890): Pub com.facebook.katana.provider.MobileEventLogProvider: com.facebook.katana.provider.MobileEventLogProvider 05-10 14: 09: 59.084: I / ActivityThread (7890): Pub com.facebook.katana.provider.PushNotificationsProvider: com.facebook. katana.provider.PushNotificationsProvider 05-10 14: 09: 59.084: I / ActivityThread (7890): Pub com.facebook.katana.provider.PhotosProvider: com.facebook.katana.provider.PhotosProvider 05-10 14: 09: 59.084: I / ActivityThread (7890): Pub com.facebook.katana.provider.ConnectionsProvider: com.facebook.katana.provider.ConnectionsProvider 05-10 14: 09: 59.092: I / Activit yThread (7890): Pub com.facebook.orca.notify.FbandroidMessagesForegroundProvider: com.facebook.orca.notify.FbandroidMessagesForegroundProvider 05-10 14: 09: 59.154: D / ACRA (7890): ACRA is enabled for com.facebook.katana, intializing ... 05-10 14: 09: 59.185: D / ACRA (7890): Search for error files in /data/data/com.facebook.katana/app_acra-reports 05-10 14: 09: 59.232: W / nalizableReferenceQueue (7890): at com.facebook.orca.inject.binder.AnnotatedBindingBuilderImpl.a (AnnotatedBindingBuilderImpl.java:22) 05-10 14: 09: 59.232: W / nalizableReferenceQueue (7890): at com.facebook.orca.app. FbBaseModule.a (FbBaseModule.java:73) 05-10 14: 09: 59.232: W / nalizableReferenceQueue (7890): at com.facebook.orca.inject.AbstractModule.a (AbstractModule.java:19) 05-10 14: 09: 59.232: W / nalizableReferenceQueue (7890): at com.facebook.orca.inject.FbInjectorImpl.a (FbInjectorImpl.java:61) 05-10 14: 09: 59.232: W / nalizableReferenceQueue (7890): at com.facebook .orca.inject.FbInjectorImpl. (FbInjectorImpl.java:41) 05-10 14: 09: 59.232: W / nalizableReferenceQueue (7890): at com.facebook.orca.inject.FbInjector.a (FbInjector.java:40) 05-10 14: 09: 59.232 : W / nalizableReferenceQueue (7890): at com.facebook.katana.FacebookApplication.onCreate (FacebookApplication.java:75) 05-10 14: 10: 44.826: I / ActivityManager (192): Killing proc 7890: com.facebook.katana / 10077: kill background 05-10 14: 10: 44.826: W / ActivityManager (192): Plan for restarting the emergency service com.facebook.katana / .service.MediaUploadService at 14963ms

MyService LogCat

I / ActivityManager (192): Killing proc 8556: ie.cathalcoffey.android/10033: kill background I / ActivityManager (192): Killing proc 8606: ie.cathalcoffey.android: remote / 10033: kill background W / ActivityManager (192) : Planning the restart of the emergency service ie.cathalcoffey.android/.MyService in 23358 ms I / ActivityManager (192): Run proc ie.cathalcoffey.android:remote to service ie.cathalcoffey.android/.MyService: pid = 8726 uid = 10033 gids = {3003} I / ActivityManager (192): Killing proc 8726: ie.cathalcoffey.android: remote / 10033: kill background W / ActivityManager (192): Planning the restart of the emergency service ie.cathalcoffey.android/.MyService at 93432ms I / ActivityManager (192): Run proc ie.cathalcoffey.android: to serve ie.cathalcoffey.android/.MyService: pid = 9063 uid = 10033 gids = {3003} I / ActivityManager (192): Killing pro c 9063: ie.cathalcoffey.android: remote / 10033: kill background W / ActivityManager (192): Planning to restart the emergency service ie.cathalcoffey.android/.MyService at 373728ms

+2
source share
2 answers

The solution to this problem is as follows. The reason the OS believes that it killed the Service that did the work. Then it restarts this service with less delay.

Now I edited my service to run AsyncTask, which just loops forever and calls Thread.sleep (100)

Now, when I force-kill my Service, I see very similar reboot times that I do for the Facebook service: 5000 ms, 24713 ms, 14997 ms, 54912 ms, 14988 ms.

Please prove that I'm wrong or right, but as it stands, it seems to solve my problem.

+3
source

I believe that this greatly depends on the importance of the process that was killed. When you use a task killer to destroy an application, the Android OS kills it just as if the system was running with low memory. Since he is killed in the same way, applications or services will restart the Android OS based on the "importance" of the application.

To make the service more important (and you can restart it faster), you can add a notification to the service. This notification will be visible in the notification panel. Since the service was visible to the user, it will restart faster than applications or other services that were not visible.

In addition, a limited service will be more important than an unlimited service.

For more information, check out this http://developer.android.com/guide/topics/fundamentals/processes-and-threads.html (part of the process life cycle)

EDIT Get the importance of all running processes.

List<RunningAppProcessInfo> procInfo = activityManager.getRunningAppProcesses(); for(int i = 0; i < procInfo.size(); i++){ int importance = procInfo.get(i).importance; //Print importance and Package name to log } 
+1
source

Source: https://habr.com/ru/post/958179/


All Articles