參考
看圖識?兩者的生命周期
學(xué)生命周期的時候最先看的就是官方的生命周期圖麻蹋。
其中开仰,
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
這張生命周期圖比官方的不知道高到哪里去了氧映。
在Fragment的不同生命周期回調(diào)方法中調(diào)用Activity對象的finish()方法
1.在Activity的生命周期回調(diào)方法中調(diào)用
注意给猾,該Activity中添加了一個Fragment拗秘。
-
在onCreate()中調(diào)用
-
在onStart()中調(diào)用
-
在onResume()中調(diào)用
2.在Fragment的生命周期回調(diào)方法中調(diào)用
-
在onAttach(), onCreate(), onCreateView(), onViewCreated(), onActivityCreated(), onStart()中調(diào)用
-
在onResume()中調(diào)用
以上签舞,需要特別引起重視的是贷帮,在Fragment的生命周期回調(diào)方法中調(diào)用Activity對象的finish()方法戚揭。
- 在onAttach(), onCreate(), onCreateView(), onViewCreated(), onActivityCreated(), onStart()任意一個回調(diào)中調(diào)用finish(),所經(jīng)歷的生命周期都是一樣的撵枢。
比如民晒,在Fragment的onCreate()中通過getActivity().getIntent()獲取Intent對象,然后對Intent對象中的Data進(jìn)行解析锄禽。
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為空的時候,會執(zhí)行Activity對象的finish()方法沃但,然后return磁滚。但生命周期還會繼續(xù)往下走。
onCreateView() --> onViewCreated() --> onActivityCreated() --> onStart()...
所以宵晚,在之后的回調(diào)方法中垂攘,一定要做好判斷。
Fragment的懶加載
http://yxcoding.net/2016/07/13/1468374159777/
http://www.reibang.com/p/52daa5ff5130