android 生命周期简解

本文详细介绍了在Android应用中如何通过Bundle对象实现App间切换时的数据保存,以及如何在完全退出应用前将数据保存到外部存储,并在应用重新启动时进行数据恢复。包括使用onSaveInstanceState和onRestoreInstanceState方法来处理内存数据,以及onStop方法配合SharedPreferences进行外部存储操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1:切换屏幕 (App之间切换或手机home键)
      
    内存保存:借助Bundle对象


    保存数据:
      
       @Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
                            //获得当前数:key
                            key=customListView.getFirstVisiblePosition();
outState.putInt("key",key);
Log.i("TAG", "运行了 onSaveInstanceState 保存 msg:"+key);
}


     恢复数据:
        @Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
//获得保存的数
key=(Integer) savedInstanceState.get("key");
customListView.setSelectionFromTop(key, 0);
Log.i("TAG", "运行:onRestoreInstanceState恢复;key="+key);
super.onRestoreInstanceState(savedInstanceState);
}


    
      2:完全退出App:使用外部存储
     
        @Override
protected void onStop() {
Log.i("TAG", "onStop");
//外部存储:
key=customListView.getFirstVisiblePosition();//获得保存数据
sp=getSharedPreferences("languageLey",Context.MODE_PRIVATE);
ed=sp.edit();
ed.putInt("languageLey", key);
Log.i("TAG", "运行了 ed.putInt() onStop 保存 key:"+key);
ed.commit();
super.onStop();
}


         
            @Override
protected void onStart() {
Log.i("TAG", "onStart");
sp=getSharedPreferences("languageLey",Context.MODE_PRIVATE);
key=sp.getInt("languageLey", key);(第二个参数可以随便写)
Log.i("TAG", "key="+key);
customListView.setSelectionFromTop(key, 0);
Log.i("TAG", "运行:onStart恢复;key="+key);
super.onStart();
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值