如何判断应用被强杀以及解决出现的空指针问题
来源:互联网 发布:福建摩尔软件骗局 编辑:程序博客网 时间:2024/05/29 16:03
原文链接
判断应用被强杀
在Application中定义一个静态变量,给一个初始值,然后在闪屏页面为这个变量重新赋值,接下来闪屏页面会跳转到主页面,我们在主页面对这个值进行判断,如果变量的值是初始值,则说明应用被强杀了,接下来看看相关代码
public class MyApp extends Application { public static int CODE = -1; public MyApp app; @Override public void onCreate() { super.onCreate(); app = this; }}
public class SplashActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); MyApp.CODE = 1; setContentView(R.layout.activity_splash); new Handler().postDelayed(new Runnable() { @Override public void run() { startActivity(new Intent(SplashActivity.this,MainActivity.class)); finish(); } },2000); }}
public class MainActivity extends AppCompatActivity { private TextView textView; private int code; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); textView = (TextView) findViewById(R.id.textview); code = MyApp.CODE; if(code == -1){ //应用被强杀了 } }}
如何模拟应用在后台被强杀呢,很简单,我们把应用切换到后台,
空指针问题
接下来演示一个应用在后台被强制杀死后重新启动出现空指针的问题,代码如下
public class MyApp extends Application { public static int CODE = -1; public MyApp app; //集合,用于保存数据 public static ArrayList<String> list; @Override public void onCreate() { super.onCreate(); app = this; }}
我们在Application中定义了一个集合,然后在闪屏页面为它初始化并赋值,
public class SplashActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); MyApp.CODE = 1; setContentView(R.layout.activity_splash); MyApp.list = new ArrayList(); MyApp.list.add("你好"); new Handler().postDelayed(new Runnable() { @Override public void run() { startActivity(new Intent(SplashActivity.this,MainActivity.class)); finish(); } },2000); }}
public class MainActivity extends AppCompatActivity { private TextView textView; private int code; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); textView = (TextView) findViewById(R.id.textview); code = MyApp.CODE; if(code == -1){ //重新走一遍启动流程,保证数据初始化 startActivity(new Intent(this,SplashActivity.class)); } //注意,应用如果在后台被强制杀死,此处会出现空指针 if(MyApp.list!=null){ textView.setText(MyApp.list.get(0)); } }}
当应用在后台被杀死的时候,闪屏页面并不会走,这时候集合就未进行初始化,我们需要判断一下,或者我们对CODE进行判断,如果强杀了我们重新走一遍启动流程,这样就能保证集合用于不为空了。
0 0
- 如何判断应用被强杀以及解决出现的空指针问题
- 如何判断应用被强杀以及解决出现的空指针问题
- 解决android应用被强杀或应用被回收导致的空指针问题
- 关于java中判断为空出现空指针异常的问题
- 解决MONKEY-TEST 测试出现的Spinner弹出后关闭时出现的空指针问题
- 引用context出现的空指针问题
- list的addAll出现空指针问题
- 野指针出现以及如何避免问题
- 使用注解方式实现Dubbo搭建,解决消费者调用接口出现空指针异常以及事务等问题
- 解决iOS空指针数据的问题
- 解决一个冷门的空指针问题
- 解决iOS空指针数据的问题
- 用butterknife8.2.1 如何配置。出现空指针问题。
- null与空串的区别,什么是空指针,如何解决空指针异常
- java集合判断出现空指针异常
- java中判断空字符串时避免出现空指针的方法
- iText使用PdfCopy时出现的空指针问题
- SpringDateJpa使用JpaRepository方法出现空指针异常的问题
- OkHttp深入学习(二)——网络
- js模块化管理起步-import和export用法
- 单链表
- 带分数
- Python3菜鸟笔记
- 如何判断应用被强杀以及解决出现的空指针问题
- ORACLE 11g 修改db_unique_name参数
- return
- 0ctf 2017 babyheap writeup
- C++抽象编程——STL(3)——queue 类
- Linux 下的粘滞位
- 深度学习-采用caffe提供的工具extract_features.bin进行特征提取
- 透过分片定量压缩,理解Java数据流的装饰者模式
- 插入排序