app 在后台时间过长被杀死,及时重启
大家肯定会遇到过app退到后台,同时开启很多其他的应用,这时可能会造成我们的app因内存不足而导致进程被杀死,这时我们在从后台返回我们的app时,就会出现问题,特别是用到Application里面存储的变量时,这时会出现空指针的现象,这时我们就要想办法来解决这个问题。
第一种是直接在登录的时候直接把网络获取的数据存进数据库,用到的时候直接在数据库拿,这样呢可以解决问题,但是这时就要写很多的代码。同时还要对数据库操作,这样做起来比较麻烦。
第二种是把数据存到application中,这时我们要定义一个变量来判断app是否被杀死。
(1)先在application中定义一个静态变量
//判断是否被回收public static intflag= -1;
(2)这时我们只需要定义一个BaseActivity
public classBaseActivityextendsAppCompatActivity {@Overrideprotected voidonCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState); setContentView(R.layout.activity_base);if(MyApplication.flag== -1) {//flag为-1说明程序被杀掉protectApp(); } }protected voidprotectApp() { Intent intent =newIntent(this, MainActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);//清空栈里MainActivity之上的所有activtystartActivity(intent); finish(); }
(3)这时我们要把我们项目里面的所有activity(除了欢迎页的activity)t统一继承这个BaseActivity,并在MainActivity中实现这个protecApp()
@Overrideprotected voidprotectApp() { startActivity(newIntent(this, SplashActivity.class)); finish();}
(4)最后我们要在欢迎页的activity中把flag设置成-1以外的数;
MyApplication.flag=0;
这样我们的app被后台杀死时,都会重走欢迎页,重新获取数据