您的位置:首页 > 移动开发 > Android开发

自动存取Android Bundle中数据,onSaveInstanceState和onRestoreInstanceState存取数据的便捷方案

2016-09-13 15:04 549 查看

DataAutoAccess

自动存取Android Bundle中数据——给需要自动存取的变量添加注解,编译时会通过注解处理自动生成存取的代码

用处

Activity或Service启动时自动取出Intent中的数据,并赋值给相应的field

Activity或Fragment由于系统内存不足将要被杀死时,在onSaveInstanceState方法里存储数据,重启时在onCreate中取出数据并赋值给相应的field

使用

activity 中的使用:

public class ExampleActivity extends Activity{
@AutoAccess String name;
@AutoAccess String description;

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//get data
DataAutoAccess.getData(this, savedInstanceState);
//TODO use fields...
}

@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
//save data
DataAutoAccess.saveData(this, outState);
}
}


Intent传参形式:

Intent intent = new Intent(this, TestActivity.class);
intent.putExtra("name", "DataAutoAccess");
intent.putExtra("description", "Android bundle data auto access.");
startActivity(intent);


经过以上配置之后,DataAutoAccess会自动从intent中取出数据,给name和description变量赋值,而且当activity由于系统内存不足被杀死时,也会自动保存变量值,在onCreate时取出进行自动赋值。是不是感觉到挺Cool!

当然,实际使用过程中不会在每个activity都写一遍存取代码,所以可以把存取代码放在自己activity基类中,子activity只管数据的使用就可以,不需要关心数据存取。另外,DataAutoAccess的使用不局限于activity中,service和fragment中也可以使用,详细的使用和代码请前往Github DataAutoAccess

项目代码

Github DataAutoAccess

欢迎大家提议,我会继续优化,喜欢的就去github上star吧 O(∩_∩)O!

注:引用请注明作者
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: