Вот как я убить приложение и запустить его сноваAndroid, как надежно перезапустить приложение
Intent mStartActivity = new Intent(this, InitialActivity.class);
int mPendingIntentId = 123456;
PendingIntent mPendingIntent = PendingIntent.getActivity(this, mPendingIntentId, mStartActivity, PendingIntent.FLAG_CANCEL_CURRENT);
AlarmManager mgr = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
mgr.set(AlarmManager.RTC, System.currentTimeMillis() + 500, mPendingIntent);
android.os.Process.killProcess(android.os.Process.myPid());
Некоторые устройства, по-видимому не в состоянии убить приложение, а затем запустить его в 500 милисекунд, и пользователь видит черный экран. Есть ли лучший, более надежный способ сделать это?
Трудно сказать, если вы не объясните, что именно вы пытаетесь достичь. Зачем вам нужно убивать процесс? Если вы просто хотите воссоздать свою текущую «деятельность», не могли бы вы просто использовать 'recreate()'? –
У меня такая же проблема, я также использую AlarmManager, но я думаю, что для получения данных из базы данных требуется время, потому что мое приложение работает так гладко, когда у меня мало элементов в списке, и требуется время, только когда элементы намного больше в списке, поэтому может быть проблемой при загрузке адаптера или извлечении элементов из db. – Apurva
Очень надежным способом было бы «бросить новое RuntimeException (« Почему я делаю это с моими бедными пользователями? »);' Внутри метода, который предназначен для перезапуска вашего приложения. Сомневаюсь, что потребуется 500 мс, чтобы убить его, и по умолчанию снова перезапустите процесс. Не уверен, почему вы хотели бы это сделать. – kha