Activity与Fragment知识点总结

参考

1.Fragment
http://yifeng.studio/2016/12/15/android-fragment-attentions/?hmsr=toutiao.io&utm_medium=toutiao.io&utm_source=toutiao.io

看图识�两者的生命周期

学生命周期的时候最先看的就是官方的生命周期图。
其中,
Activity的:https://developer.android.com/reference/android/app/Activity.html
Fragment的:https://developer.android.com/guide/components/fragments.html
但是,高手在民间。
github的:https://github.com/xxv/android-lifecycle
这张生命周期图比官方的不知道高到哪里去了。

Activity_Fragment_lifecycle.jpg

在Fragment的不同生命周期回调方法中调用Activity对象的finish()方法

1.在Activity的生命周期回调方法中调用
注意,该Activity中添加了一个Fragment。

  • 在onCreate()中调用


    在Activity的onCreate()中调用.png
  • 在onStart()中调用


    在Activity的onStart()中调用.png
  • 在onResume()中调用


    在Activity的onResume()中调用.png

2.在Fragment的生命周期回调方法中调用

  • 在onAttach(), onCreate(), onCreateView(), onViewCreated(), onActivityCreated(), onStart()中调用


    在Fragment的onAttach(), onCreate(), onCreateView(), onViewCreated(), onActivityCreated(), onStart()中调用.png
  • 在onResume()中调用


    在Fragment的onResume()中调用.png

以上,需要特别引起重视的是,在Fragment的生命周期回调方法中调用Activity对象的finish()方法。

  • 在onAttach(), onCreate(), onCreateView(), onViewCreated(), onActivityCreated(), onStart()任意一个回调中调用finish(),所经历的生命周期都是一样的。
    比如,在Fragment的onCreate()中通过getActivity().getIntent()获取Intent对象,然后对Intent对象中的Data进行解析。
    like this:
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);   
         Intent intent = getActivity().getIntent();    
         parseUriData(intent);
}
private void parseUriData(Intent intent) {    
        if (null == intent || null == intent.getData()) {        
                getActivity().finish();        
                return;   
        }    
        Uri data = intent.getData();    
        String voucher = data.getQueryParameter(ARG_VOUCHER);    
        if (!TextUtils.isEmpty(voucher) && !TextUtils.equals("null", voucher)) {
                this.voucher = Consts.GSON.fromJson(voucher, Voucher.class);    
        }
}

以上代码,在Data为空的时候,会执行Activity对象的finish()方法,然后return。但生命周期还会继续往下走。
onCreateView() --> onViewCreated() --> onActivityCreated() --> onStart()...
所以,在之后的回调方法中,一定要做好判断。

Fragment的懒加载

http://yxcoding.net/2016/07/13/1468374159777/
//www.greatytc.com/p/52daa5ff5130

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容