Android Запустите приложение из последней активности
У меня есть приложение с несколькими видами деятельности. У My A Activity есть параметры фильтра Manifest Intent: action.MAIN и category.LAUNCHER. после его загрузки я вызываю Activity B и finish() A, так как я больше не использую его.
После того, как я запустил свое приложение, перейдите от действия A к B и нажмите кнопку "Домой", когда я перезапущу его из меню приложений или, например, из приложения "Маркет" (без длительного нажатия на кнопку "Домой"), оно начинается с Активность и не сохраняйте свою последнюю Активность B.
Я точно знаю, что это возможно для перезапуска приложения из его последнего Activity (некоторые приложения из Маркета поддерживают его), и я думаю, что это может быть определено параметрами Manifest, но я не знаю, какое именно.
Кто-нибудь знает, как реализовать это, чтобы мое приложение могло перезапустить с его последнего действия B?
Спасибо ayanir
3 ответа
Хотя я знаю, что это старый вопрос, я боролся с этой самой проблемой и не мог найти ответ на SO. Итак, вот мой (очень новичок) ответ:
Нет, я не думаю, что это возможно сделать путаницей с манифестом - вы можете запускать только одно фиксированное действие для приложения с домашнего экрана. Что вы можете сделать, однако, это запустить любую активность, которую вы хотите с этой начальной точки, и Android может сделать это достаточно быстро, чтобы вы никогда не увидели первую.
Хотя это очень похоже на взлом, я реализовал эту маршрутизацию в методе onResume() начальной операции и использовал sharedPreferences, чтобы отслеживать, какую активность запустить:
final Class<? extends Activity> activityClass;
SharedPreferences prefs = getSharedPreferences("sharedPrefs", MODE_PRIVATE);
int activityID = prefs.getInt("whichActivity", -1);
if (activityID == Constants.ACTIVITY_ID_MAINSCREEN) {
activityClass = MainScreen.class;
} else {
activityClass = null; return;
}
Intent newActivity = new Intent(this, activityClass);
this.startActivity(newActivity);
В последнее время было много очень похожих вопросов. Хорошей идеей будет сначала поискать на сайте, чтобы избежать повторяющихся вопросов.
Например, приведенный ниже вопрос говорит о том, что такое поведение происходило из-за того, что разработчик запускал свое приложение с использованием отладчика Eclipse. У других людей возникла эта проблема, потому что они запускали приложение прямо из Eclipse, а не запускали его вручную, вручную нажимая значок запуска.
Android: сохранить активность задания после перезагрузки из HOME
Поэтому есть несколько вещей, которые следует учитывать при разработке приложений для Android. И одна из самых важных вещей - Application Lifecyle, если вы еще этого не сделали, я бы предложил это видео. То, что происходит, - то, что приложение может быть убито и перезагружено в любой момент времени, и вам нужно сохранить состояние вашего приложения, чтобы вы могли восстановить его в любое время. Если вы откроете свое приложение из Панели запуска, вы всегда будете входить в действие, которое запускает приложение, если вы хотите перейти к следующему действию, вам нужно сохранить эту информацию, а затем перейти к действию в своем коде.
Также взгляните на эту документацию о SavingPersistentState