现在的位置: 首页 > 综合 > 正文

Fragment技术之Activity与Fragment生命周期对比

2018年06月05日 ⁄ 综合 ⁄ 共 3698字 ⁄ 字号 评论关闭

Fragment的应用很广泛,但是Fragment必须得依赖Activity才能生存,Activity和Fragment的声明周期也惊人的相似。

下面通过一个demo来观擦Activity和Fragment的声明周期:

MainActivity.java代码如下:

public class MainActivity extends Activity {
	private final String TAG = "MainActivity";
	private FragmentManager manager;
	private FragmentTransaction transaction;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		manager = getFragmentManager();
		transaction = manager.beginTransaction();
		MyFragment fragment = new MyFragment();
		transaction.add(R.id.line, fragment);
		transaction.commit();
		Log.i(TAG, "--MainActivity->>onCreate");
	}

	@Override
	protected void onStart() {
		// TODO Auto-generated method stub
		super.onStart();
		Log.i(TAG, "--MainActivity->>onStart");
	}

	@Override
	protected void onResume() {
		// TODO Auto-generated method stub
		super.onResume();
		Log.i(TAG, "--MainActivity->>onResume");
	}

	@Override
	protected void onPause() {
		// TODO Auto-generated method stub
		super.onPause();
		Log.i(TAG, "--MainActivity->>onPause");
	}

	@Override
	protected void onStop() {
		// TODO Auto-generated method stub
		super.onStop();
		Log.i(TAG, "--MainActivity->>onStop");
	}

	@Override
	protected void onDestroy() {
		// TODO Auto-generated method stub
		super.onDestroy();
		Log.i(TAG, "--MainActivity->>onDestroy");
	}

	
}

MyFragment.java代码如下:

public class MyFragment extends Fragment {
	private final String TAG = "MyFragment";
    
	//获得activity的传递的值
	@Override
	public void onAttach(Activity activity) {
		// TODO Auto-generated method stub
		super.onAttach(activity);
		Log.i(TAG, "--MyFragment->>onAttach");
	}

	//实例化成员变量,可以在这个方法中初始化相关变量(如:连接数据库)
	@Override
	public void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		Log.i(TAG, "--MyFragment->>onCreate");
	}

	//给当前的fragment绘制UI布局,可以使用线程更新UI
	@Override
	public View onCreateView(LayoutInflater inflater, ViewGroup container,
			Bundle savedInstanceState) {
		Log.i(TAG, "--MyFragment->>onCreateView");
		View view = inflater.inflate(R.layout.f1, null);
		// TODO Auto-generated method stub
		return view;
	}

	//表示activity执行oncreate方法完成了的时候会调用此方法
	@Override
	public void onActivityCreated(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onActivityCreated(savedInstanceState);
		Log.i(TAG, "--MyFragment->>onActivityCreated");
	}

	//和activity一致
	@Override
	public void onStart() {
		// TODO Auto-generated method stub
		super.onStart();
		Log.i(TAG, "--MyFragment->>onStart");
	}

	//和activity一致
	@Override
	public void onResume() {
		// TODO Auto-generated method stub
		super.onResume();
		Log.i(TAG, "--MyFragment->>onResume");
	}

	//和activity一致
	@Override
	public void onPause() {
		// TODO Auto-generated method stub
		super.onPause();
		Log.i(TAG, "--MyFragment->>onPause");
	}

	//和activity一致
	@Override
	public void onStop() {
		// TODO Auto-generated method stub
		super.onStop();
		Log.i(TAG, "--MyFragment->>onStop");
	}

	//表示fragment销毁相关联的UI布局
	@Override
	public void onDestroyView() {
		// TODO Auto-generated method stub
		super.onDestroyView();
		Log.i(TAG, "--MyFragment->>onDestroyView");
	}

	//销毁fragment对象
	@Override
	public void onDestroy() {
		// TODO Auto-generated method stub
		super.onDestroy();
		Log.i(TAG, "--MyFragment->>onDestroy");
	}

	//脱离activity
	@Override
	public void onDetach() {
		// TODO Auto-generated method stub
		super.onDetach();
		Log.i(TAG, "--MyFragment->>onDetach");
	}
}

 

运行结果:

activity初次加载:

 --MainActivity->>onCreate
 --MyFragment->>onAttach
 --MyFragment->>onCreate
 --MyFragment->>onCreateView
 --MyFragment->>onActivityCreated

 

 --MainActivity->>onStart
 --MyFragment->>onStart
 --MainActivity->>onResume
 --MyFragment->>onResume

 

电话打入
 
 --MyFragment->>onPause
 --MainActivity->>onPause
 --MyFragment->>onStop
 --MainActivity->>onStop
 
 电话结束
 
 --MainActivity->>onStart
 --MyFragment->>onStart
 --MainActivity->>onResume
 --MyFragment->>onResume
 
销毁activity
 --MyFragment->>onPause
 --MainActivity->>onPause
 --MyFragment->>onStop
 --MainActivity->>onStop
 --MyFragment->>onDestroyView
 --MyFragment->>onDestroy
 --MyFragment->>onDetach
 --MainActivity->>onDestroy

 

 

 

 

抱歉!评论已关闭.