Что я хочу сделать, так это закрыть все открытые действия, когда есть какое-либо необработанное исключение.
У меня есть BaseActivity
, который является базовым для всех действий в моем приложении и каждого действия, производного от этого класса.
Я вызвал setDefaultUncaughtExceptionHandler
в onCreate
из BaseActivity
.
У меня есть BaseActivity
, как показано ниже:
public abstract class BaseActivity extends Activity
{
@Override
public void onCreate(Bundle savedInstanceState)
{
// Exceptions that are not handled are received in GlobalExceptionHandler class
Thread.setDefaultUncaughtExceptionHandler(new MyExceptionHandler());
}
public class MyExceptionHandler implements UncaughtExceptionHandler
{
@Override
public void uncaughtException(Thread thread, Throwable e)
{
String report = "";
// Code to generate report string
......
// Code to generate report string
// Start error screen
Intent intent = new Intent(mContext, ErrorScreen.class);
intent.putExtra("error", report);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
// Exit
System.exit(0);
}
}
}
Вот моя активность ErrorScreen:
public class ErrorScreen extends Activity implements OnClickListener
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.error_screen_layout);
// Display error report from intent
}
@Override
public void onClick(View view)
{
switch(view.getId())
{
case R.id.btn_exit_app:
{
// All this is not working
// and few activities are still there
finish();
android.os.Process.killProcess(android.os.Process.myPid());
System.exit(1);
}
break;
}
}
}
При любом необработанном исключении вызывается моя функция uncaughtException
, что, как и ожидалось, затем я запускаю новое действие для отображения сведений об ошибке и кнопку для выхода в ErrroScreen
действии.
Но проблема в том, что после нажатия кнопки выхода из приложения закрываются не все действия в приложении, открытых действий все еще мало, как закрыть все открытые действия?