Ответ 1
Предлагаемое решение 1 -
Добавьте этот тег android:clearTaskOnLaunch="true"
в файл manifest.xml к вашему основному действию, которое должно всегда запускаться.
Вероятная причина, почему это не сработало
Когда приложение выходит из строя, оно выдает Exception
, и нам нужно обрабатывать Exception
, и в противном случае мы не получили ожидаемое поведение
Предлагаемое решение 2
Попробуйте обработать любое неперехваченное исключение и сообщить системе, что делать. Чтобы реализовать это, попробуйте выполнить следующие шаги.
- Создайте класс, расширяющий
Application
Класс - Обработать
uncaughtException
в подклассеApplication
. - В своем пусковом устройстве
Activity
вызовите классApplication
. - После того, как вы поймаете Исключение, запустите свой основной
Activity
(согласно вашему требованию).
Пример кода
Шаг 1 и 2
package com.casestudy.intentsandfilter;
import android.app.Application;
import android.content.Intent;
public class MyApplication extends Application
{
@Override
public void onCreate() {
super.onCreate();
Thread.setDefaultUncaughtExceptionHandler(
new Thread.UncaughtExceptionHandler() {
@Override
public void uncaughtException (Thread thread, Throwable e) {
handleUncaughtException (thread, e);
}
});
}
private void handleUncaughtException (Thread thread, Throwable e) {
// The following shows what I'd like, though it won't work like this.
Intent intent = new Intent (getApplicationContext(),DrawView.class);
startActivity(intent);
// Add some code logic if needed based on your requirement
}
}
Шаг 3
public class MainActivity extends Activity {
protected MyApplication app;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// Get the application instance
app = (MyApplication)getApplication();
.............
}
}
Шаг 4
Измените метод ниже, согласно вашему требованию
private void handleUncaughtException (Thread thread, Throwable e) {
// The following shows what I'd like, though it won't work like this.
Intent intent = new Intent (getApplicationContext(), HomeActivity.class);
startActivity(intent);
// Add some code logic if needed based on your requirement
}