Ответ 1
При запуске с помощью значка на главном экране Android всегда будет запускать действие с помощью фильтра android.intent.action.MAIN
в вашем AndroidManifest.xml
, если приложение уже не работает (в этом случае оно, очевидно, будет восстанавливать активность поверх стека).
Чтобы достичь описанного, вы можете просто сохранить последнее видимое действие в SharedPreferences
и иметь активность Диспетчера, которая запускает последнее действие в соответствии с настройками.
Итак, в каждом действии, который вы хотите перезапустить автоматически:
@Override
protected void onPause() {
super.onPause();
SharedPreferences prefs = getSharedPreferences("X", MODE_PRIVATE);
Editor editor = prefs.edit();
editor.putString("lastActivity", getClass().getName());
editor.commit();
}
И деятельность Диспетчера похожа на следующее:
public class Dispatcher extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Class<?> activityClass;
try {
SharedPreferences prefs = getSharedPreferences("X", MODE_PRIVATE);
activityClass = Class.forName(
prefs.getString("lastActivity", Activity1.class.getName()));
} catch(ClassNotFoundException ex) {
activityClass = Activity1.class;
}
startActivity(new Intent(this, activityClass));
}
}
Примечание
- Вы можете создать базовый класс для переопределения
onPause
- Активность Диспетчера, очевидно, должна быть
android.intent.action.MAIN
action