Application中定义公用数据
2015-12-23 15:01
543 查看
Android编写代码的过程中会遇到过很多数据传递的问题,很多人认为在Application中公开get() set()方法,这样Activity之间的传值就不用Intent跳转来回传值那么麻烦了,而这些数据就变成了全局的数据,岂不是很方便?但是这样做的最终结果会导致NullPointerException,下面我写一个Demo来测试一下这个问题:
Step 1:创建一个测试Application
Step 2 创建SetActivity,为userName赋值:
Step 3:创建GetActivity取出userName的值显示到UI上:
Step 4 打开SetActivity 后按Home键使app 推到后台,过段时间之后app崩溃,当用户重新返回,想打开app时候,显示Log NullPointerException
这是因为当用户重新返回app时候GetActivity 重新恢复了onResume 的状态,但是TestApplication 却是一个被kill掉重新创建的过程,所以此时该Application中并没有当时SetActivity 存的“GodLoveMichael”,自然调用.size()的时候会报NullPointerException ;
Step 1:创建一个测试Application
class TestApplication extends Application{ String userName; String getUserName(){ return userName; } void setUserName(String userName){ this.userName = userName; } }
Step 2 创建SetActivity,为userName赋值:
public class SetActivity extends Activity { void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.writing); TestApplication test= (TestApplication)getApplication(); test.setUserName("GodLoveMichael"); startActivity(new Intent(this, GetActivity.class)); } }
Step 3:创建GetActivity取出userName的值显示到UI上:
public class GetActivity extends Activity{ private TextView mUserNameTv; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.get_activity_layout); mUserNameTv =(TextView) findViewById(R.id.username); TestApplication test = (TestApplication)getApplication(); mUserNameTv.setText(test.getUserName().size()); } }
Step 4 打开SetActivity 后按Home键使app 推到后台,过段时间之后app崩溃,当用户重新返回,想打开app时候,显示Log NullPointerException
这是因为当用户重新返回app时候GetActivity 重新恢复了onResume 的状态,但是TestApplication 却是一个被kill掉重新创建的过程,所以此时该Application中并没有当时SetActivity 存的“GodLoveMichael”,自然调用.size()的时候会报NullPointerException ;
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories