В настоящее время у меня есть периодическая проблема, когда я получаю IllegalArgumentException
при вызове Activity.startLockTask()
. В моем приложении установлено приложение владельца устройства, которое позволило моему пакету автоматически подключаться.
Ниже приведен код, удостоверяющий, что мой пакет может заблокировать себя. Если он может тогда, он сам зацикливается.
код:
if (dpm.isLockTaskPermitted(getPackageName())) {
super.startLockTask();
}
Logcat:
java.lang.IllegalArgumentException: Invalid task, not in foreground
at android.os.Parcel.readException(Parcel.java:1544)
at android.os.Parcel.readException(Parcel.java:1493)
at android.app.ActivityManagerProxy.startLockTaskMode(ActivityManagerNative.java:5223)
at android.app.Activity.startLockTask(Activity.java:6163)
Проблема заключается в том, что мое приложение должно периодически перезапускаться. Таким образом, мы освобождаем, завершаем работу и начинаем ее с новой задачи, а затем выходим из нашего процесса. Когда активность возвращается, он пытается закрепить себя - иногда это работает - иногда это не так. Я верю, что, как мы перезапускаем, вероятно, причина, по которой выбрано исключение, но это не имеет значения, так как новая активность IS на переднем плане и сосредоточена на ОС.
Как только действие не будет выполнено, он будет продолжать сбой, пока он пытается: если я сижу там и пытаюсь установить связь каждые 5 секунд, он будет продолжать сбой каждый раз. Я попытался привязать в onCreate
, onWindowFocusChanged
, onResume
и onStart
.
Кто-нибудь знает, в чем проблема?
Для справки:
Строка 8853: https://android.googlesource.com/platform/frameworks/base/+/android-5.0.2_r1/services/core/java/com/android/server/am/ActivityManagerService.java