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

DataAutoAccess

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

用处

  1. Activity或Service启动时自动取出Intent中的数据,并赋值给相应的field
  2. 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!

注:引用请注明作者

你可能感兴趣的:(Android)