Activity、Fragement生命周期

Activity生命周期

onCreate()
活动第一次调用时调用,完成活动初始化操作,加载布局,绑定事件等

        setContentView(R.layout.activity_main);//加载布局
        Button b1 = (Button) findViewById(R.id.button);
        b1.setOnClickListener(this);
        
onStart()
活动由不可见->可见时调用

onResume()
活动准备好和用户交互时调用
活动处于返回栈顶,且处于运行状态

onPause()
系统准备启动或恢复另一个活动时调用
常处理:将一些消耗CPU的资源释放掉、保存一些关键数据
该方法执行速度要快,不然影响新栈顶活动使用

onStop()
活动完全不可见时调用
和onPause()区别,活动出一dialog,活动还可见,只调用onPause(),不调onStop()

onDestory()
活动在销毁前调,之后活动变为销毁状态
常处理:释放内存

onRestart()
活动由停止变成运行前调用
onStop() -> onStart()

完整生存期onCreate()-onDestory()
可见生存期onStart()-onStop()活动对用户总可见,可能与用户无法交互,可通过onStart与onStop,合理管理对用户可见的资源。如在onStart对资源加载,在onStop对资源释放,保证处于停止状态活动不会占过多内存
前台生存期onResume()-onPause()活动总处于运行状态,此时活动可与用户交互,最常接触的状态

Fragment生命周期

image

onAttach() 活动与碎片关联

onCreate()

onCreateView() 为碎片创建视图(加载布局)时调用
onActivityCreated() 确保与碎片相关联活动一定创建完时调用

onStart()
onResume()
onPause()
onStop()

onDestoryView() 与碎片关联视图被移除时 ?? 关联视图? 碎片布局被移除时

onDestory()
onDetach() 碎片与活动解除关联

:三个函数中有Bundle,碎片进入停止状态后,由于内存不足被回收。
复写onSavedInstanceState(Bundle savedInstanceState)保存数据
可在以下三个方法中再次得到数据

 public void onCreate(Bundle savedInstanceState)
 
 public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle bundle) 
 
 public void onActivityCreated(Bundle savedInstanceState)

Demo:


public class RightFragment extends Fragment {
   private static final String TAG = "`RightFragment`";
   
    @Override
   public void onSaveInstanceState(Bundle savedInstanceState) {
       String s1 = "savedInstanceState";
       savedInstanceState.putString("TAG1", s1);
   }

   @Override
   public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       Log.d(TAG, "onCreate: ");
       if (savedInstanceState != null) {
           String s2 = savedInstanceState.getString("TAG1");
           Log.d(TAG, "onCreate: s2 "+s2);//输出savedInstanceState
       }
   }
...

onSavedInstanceState()调用时机:

  1. 如果是用户自动按下返回键,或程序调用finish()退出程序,是不会触发onSaveInstanceState()和onRestoreInstanceState()的。
  2. 每次用户旋转屏幕时,您的Activity将被破坏并重新创建。当屏幕改变方向时,系统会破坏并重新创建前台Activity,因为屏幕配置已更改,您的Activity可能需要加载替代资源(例如布局)。即会执行onSaveInstanceState()和onRestoreInstanceState()的。
  3. 可能还有其它的…
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值