Я искал этот сценарий на SO. Но мне нужна какая-то основная информация.Перезапуск приложения Android с ожидающим намерением (BEHAVIOR)
Корпус прост: приложение необходимо перезапустить, но экран устройства запуска не должен отображаться. (по какой-то очевидной причине я хочу освободить память приложения).
Отложенный намерение используется для перезапуска приложения:
restartTime = 0;
alarmManager.set(AlarmManager.RTC, System.currentTimeMillis()
+ restartTime, pendingIntent); //Restarting application
& приложение убивается с помощью этой команды:
android.os.Process.killProcess(android.os.Process.myPid());
Журналы:
02-05 11:01:59.475: D/HomeActivity(31009): Restarting application
02-05 11:01:59.485: I/Process(31009): Sending signal. PID: 31009 SIG: 9
02-05 11:01:59.635: I/HomeActivity(956): On Create
02-05 11:01:59.715: D/dalvikvm(956): GC_FOR_ALLOC freed 163K, 15% free 50758K/59248K, paused 22ms, total 22ms
02-05 11:01:59.745: I/dalvikvm-heap(956): Grow heap (frag case) to 65.724MB for 15816616-byte allocation
02-05 11:01:59.815: D/dalvikvm(956): GC_FOR_ALLOC freed 2K, 12% free 66204K/74696K, paused 17ms, total 17ms
02-05 11:01:59.845: I/dalvikvm-heap(956): Grow heap (frag case) to 78.908MB for 13824016-byte allocation
02-05 11:01:59.915: D/dalvikvm(956): GC_FOR_ALLOC freed <1K, 10% free 79709K/88200K, paused 18ms, total 18ms
02-05 11:02:00.045: I/HomeActivity(956): On Resume
Как можно видеть , GC вызывается после onCreate of HomeActivity. Возможно ли, что любой поток, работающий с (последним) контекстом приложения, все еще жив?
Непонятный вопрос: если в случае использования ЦП устройства высокий, возможно ли, что приложение перезапускается (до ожиданий намерений) до того, как приложение будет уничтожено.
Является ли приложение на переднем плане при вызове 'killProcess()'. Какой компонент вызывает 'killProcess()'? –
@DavidWasser Да, приложение находится на переднем плане. Скажем, простой щелчок на кнопке вызывает killprocess(). – vipulfb