Процесс приложения Android автоматически завершается после запуска в течение некоторого времени

#java #android #activity-manager

#java #Android #activity-manager

Вопрос:

Мое приложение для Android автоматически завершается после запуска в течение некоторого времени (1 час), это журнал, который выводится на консоль, когда процесс завершается. Process <package name> (PID 21659) has died и есть другие службы, которые были отключены до того, как мое приложение было отключено, которые не связаны с моим приложением. Это из-за нехватки ресурсов процессора?

ЖУРНАЛЫ

 09-10 17:34:49.959  1601    20644   I   ActivityManager Process com.qti.csm (pid 20762) has died
09-10 17:34:49.959  1601    20644   D   ActivityManager cleanUpApplicationRecord -- 20762
09-10 17:34:49.960  1601    20644   W   ActivityManager Scheduling restart of crashed service com.qti.csm/.securityLog.RunTask in 66531ms

09-10 17:34:50.670  1601    13143   I   ActivityManager Process com.razorlabs.cpumeter (pid 23212) has died
09-10 17:34:50.670  1601    13143   D   ActivityManager cleanUpApplicationRecord -- 23212
09-10 17:34:50.680  1601    13143   W   ActivityManager Scheduling restart of crashed service com.razorlabs.cpumeter/.services.ServiceWorker in 75810ms
09-10 17:34:50.695  1601    9564    I   ActivityManager Process com.android.inputmethod.latin (pid 23423) has died
09-10 17:34:50.695  1601    9564    D   ActivityManager cleanUpApplicationRecord -- 23423
09-10 17:34:50.695  1601    9564    W   ActivityManager Scheduling restart of crashed service com.android.inputmethod.latin/.LatinIME in 85795ms

09-10 17:34:50.774  1601    1601    W   InputMethodManagerService   Session failed to close due to remote exception
09-10 17:34:50.774  1601    1601    W   InputMethodManagerService   android.os.DeadObjectException
09-10 17:34:50.774  1601    1601    W   InputMethodManagerService       at android.os.BinderProxy.transactNative(Native Method)
09-10 17:34:50.774  1601    1601    W   InputMethodManagerService       at android.os.BinderProxy.transact(Binder.java:615)
09-10 17:34:50.774  1601    1601    W   InputMethodManagerService       at com.android.internal.view.IInputMethodSession$Stub$Proxy.finishSession(IInputMethodSession.java:305)
09-10 17:34:50.774  1601    1601    W   InputMethodManagerService       at com.android.server.InputMethodManagerService.finishSessionLocked(InputMethodManagerService.java:1631)
09-10 17:34:50.774  1601    1601    W   InputMethodManagerService       at com.android.server.InputMethodManagerService.clearClientSessionLocked(InputMethodManagerService.java:1622)
09-10 17:34:50.774  1601    1601    W   InputMethodManagerService       at com.android.server.InputMethodManagerService.clearCurMethodLocked(InputMethodManagerService.java:1648)
09-10 17:34:50.774  1601    1601    W   InputMethodManagerService       at com.android.server.InputMethodManagerService.onServiceDisconnected(InputMethodManagerService.java:1667)
09-10 17:34:50.774  1601    1601    W   InputMethodManagerService       at android.app.LoadedApk$ServiceDispatcher.doDeath(LoadedApk.java:1469)
09-10 17:34:50.774  1601    1601    W   InputMethodManagerService       at android.app.LoadedApk$ServiceDispatcher$RunConnection.run(LoadedApk.java:1483)
09-10 17:34:50.774  1601    1601    W   InputMethodManagerService       at android.os.Handler.handleCallback(Handler.java:751)
09-10 17:34:50.774  1601    1601    W   InputMethodManagerService       at android.os.Handler.dispatchMessage(Handler.java:95)
09-10 17:34:50.774  1601    1601    W   InputMethodManagerService       at android.os.Looper.loop(Looper.java:154)
09-10 17:34:50.774  1601    1601    W   InputMethodManagerService       at com.android.server.SystemServer.run(SystemServer.java:363)
09-10 17:34:50.774  1601    1601    W   InputMethodManagerService       at com.android.server.SystemServer.main(SystemServer.java:230)
09-10 17:34:50.774  1601    1601    W   InputMethodManagerService       at java.lang.reflect.Method.invoke(Native Method)
09-10 17:34:50.774  1601    1601    W   InputMethodManagerService       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:889)
09-10 17:34:50.774  1601    1601    W   InputMethodManagerService       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:779)

ActivityManager Process android.ext.services (pid 2274) has died
ActivityManager Process com.qualcomm.qcrilmsgtunnel (pid 2028) has died
ActivityManager Process com.android.smspush (pid 2093) has died
  

Информация об процессоре
устройства:: Qualcomm snapdragon 625
Операционная система: Android N

Комментарии:

1. Ваше приложение находится на переднем плане? У вас запущено постоянное уведомление?

2. Привет, chrylis, мое приложение переходит в фоновый режим после завершения процесса, и у меня запущена служба переднего плана, но это не постоянная служба.

Ответ №1:

Используете ли вы объект PackageManager с помощью каких-либо изменений? У меня была такая же проблема, и оказалось, что при использовании этого объекта есть странная ошибка, если вы используете его слишком часто, он может «умереть» и привести к тому, что ваше приложение также получит «исключение мертвого объекта». Если нет, я бы рекомендовал вам попробовать закомментировать строки, которые вы могли добавить до этого исключения, и попытаться выяснить, что вызывает эту проблему. Кроме того, если возможно предоставить нам код, это помогло бы

Ответ №2:

Дэн Барух, спасибо за ответ. Я обнаружил, что в моем коде JNI произошла утечка памяти, из-за чего Android отключает мои сервисы и приложение. И странная часть заключается в том, что утечка памяти происходит очень медленно, и нет журналов, в которых говорится, что это происходит из-за нехватки памяти