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被后台杀死时,都会重走欢迎页,重新获取数据

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.什么是Activity?问的不太多,说点有深度的 四大组件之一,一般的,一个用户交互界面对应一个activit...
    JoonyLee阅读 5,784评论 2 51
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,167评论 25 709
  • 转自 1. 什么是Activity? 四大组件之一,一般的,一个用户交互界面对应一个activity setCon...
    joe1632阅读 1,432评论 0 7
  • 哎呀呀 ,马上就要面临找工作了,媛媛心里紧张呀. 作为一个即将毕业的Android程序媛,开始面临找工作了,...
    左神话阅读 4,944评论 7 59
  • 冷风在肆虐地敲打着窗棂 幽暗的灯光强打着精神 残缺的桌角发出残喘的哀鸣 斑驳的墙在冷风中颤抖 爆笑的场景走不进老人...
    梦雪他乡阅读 398评论 39 54