运行时配置变化 Android developer fight-3

处理运行时配置变化(当配置发生变化时系统会默认重启Activity(先后执行onDestroy()和onCreate()),旨在通过以与新配置相匹配的备用资源自动加载适配应用)

当只需要保存简单状态对象时,可在onSaveInstanceState()时保存在Bundle 对象,在onCreate()或onRestoreInstanceState()时恢复对象状态。 

配置变化保存大型状态对象一般有两种处理方式:

1.配置变更期间保存状态对象:利用fragment保存,步骤如下:

a)扩展Fragment类并声明对状态对象的引用

b)调用setRetainInstance(true),保存碎片

c)将碎片添加到activity,并设置要保存的状态对象

d)重启activity后使用fragmentManager检索fragment 并取出保存的对象

注:不是所有对象都能保存,例如 drawable,adapter,view等一切与context相关的对象都不能保持,以免内存泄漏;

public class MyActivity extends Activity {

    private RetainedFragment retainedFragment;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        // find the retained fragment on activity restarts
        FragmentManager fm = getFragmentManager();
        retainedFragment = (RetainedFragment) fm.findFragmentByTag(“data”);

        // create the fragment and data the first time
        if (retainedFragment == null) {
            // add the fragment
            retainedFragment = new RetainedFragment();
            fm.beginTransaction().add(retainedFragment, “data”).commit();
            // load the data from the web
            retainedFragment.setData(loadMyData());
        }

        // the data is available in retainedFragment.getData()
        ...
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        // store the data in the fragment
        retainedFragment.setData(collectMyLoadedData());
    }
}

2.自行处理变化

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值