Android app 切换后台被系统清除后如何优雅的重启系统

最近后台提过来几个崩溃日志叫我处理一下,仔细一看原来是app切换到后台重新进入导致一些对象空指针异常的情况。在网上查了点相关资料,发现还是自己写来的好,根据大量的实践,找到了一个比较稳妥的方法,也非常简洁


1、因为app切换到后台之后如无意外一般都会被杀死,只是时间的长短而已(做进程守护的不算) ,当app被杀死时 一个activity里面的参数都会被回收,但是任务栈还存在,所以我们app从后台进入前台就会导致空指针异常等一些奇怪的崩溃问题.

2、首先当app被后台杀死后Application里面的生命周期也会走一遍,activity的生命周期同样会走一遍,我们就从这两个地方入手,下面上代码

3、在Application中定义一个变量flag = -1,在你的引导页(就是你app刚刚进来的那个页面!我的引导页名字叫GuideActivity)因为会重新走一遍Application 所以我们只需要在BaseActivity中判断flag是否为-1就行了

public static int flag = -1;
 .......
public class GuideActivity extends BaseActivity {

.......
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        MyApplication.flag = 0;
        super.onCreate(savedInstanceState);
    }
}
......

  if (Application.flag == -1) {
            L.i("app被意外杀死重启App");
            Intent i = getBaseContext().getPackageManager()
                    .getLaunchIntentForPackage( getBaseContext().getPackageName() );
            i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_CLEAR_TOP);
            startActivity(i);
            return;
    }

这就是完整代码,主要是因为代码太少了,我就不上Demo了

你可能感兴趣的:(Android app 切换后台被系统清除后如何优雅的重启系统)