我将为你详细讲解“Android Fragment的生命周期详解”的完整攻略。
标题
Android Fragment的生命周期详解
概述
Fragment是Android中一种重要的组件,使用之前需要熟悉其生命周期。本文将详细介绍Android Fragment的生命周期,帮助开发者更好地理解和应用Fragment。
生命周期详述
- onAttach():fragment被添加到Activity时调用。
- onCreate():初始化Fragment时调用。
- onCreateView():创建Fragment需要显示的View时调用。
- onActivityCreated():当Fragment所在的Activity全部创建完成后调用。
- onStart():Fragment处于可见阶段,但未获得焦点。
- onResume():Fragment处于活动状态,获得了焦点。
- onPause():当前Activity跳转到其他Activity或者该Activity被弹出栈时,Fragment会走入该生命周期。
- onStop():Fragment不可见时调用。
- onDestroyView():销毁Fragment的View时调用。
- onDestroy():销毁Fragment时调用。
- onDetach():将Fragment与Activity解除关联时调用。
需要注意的是,onStop()与onPause()是不同的状态,onStop()只代表此时Fragment部分不可见,但依然有机会重新被用户看到,而onPause()则代表Fragment确实不可见了。
示例说明
示例一
我们在Activity中添加了一个Fragment,然后在Fragment中添加一个TextView,代码如下:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
Fragment fragment = new MyFragment();
transaction.add(R.id.fragment_container, fragment);
transaction.commit();
}
}
public class MyFragment extends Fragment {
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_my, container, false);
TextView tv = view.findViewById(R.id.tv);
tv.setText("Hello World");
return view;
}
}
我们运行程序后,在控制台上可以看到Fragment的生命周期变化:
onAttach()
onCreate()
onCreateView()
onViewCreated()
onActivityCreated()
onStart()
onResume()
示例二
我们在Fragment中添加一个CountDownTimer定时器,在onDestroy()方法中把定时器关闭,代码如下:
public class MyFragment extends Fragment {
private CountDownTimer countDownTimer;
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_my, container, false);
...
countDownTimer = new CountDownTimer(10000, 1000) {
@Override
public void onTick(long millisUntilFinished) {
Log.d("timer", "millisUntilFinished: " + millisUntilFinished);
}
@Override
public void onFinish() {
Log.d("timer", "onFinish");
}
}.start();
return view;
}
@Override
public void onDestroy() {
super.onDestroy();
countDownTimer.cancel();
}
}
我们运行程序后,打开Fragment,并在控制台上可以看到CountDownTimer每隔1秒输出一次倒计时,倒计时结束后输出“onFinish”,当我们按下返回按钮返回Activity后,在控制台上可以看到以下输出:
onPause()
onStop()
onDestroyView()
onDestroy()
onDetach()
结论
本文在介绍Fragment生命周期的同时,也为开发者提供了两个示例程序。希望本文能帮助到有需要的开发者,更好地应用Fragment。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Android Fragment的生命周期详解 - Python技术站