1. Application的生命周期:
public class MyApplication extends Application { public MyApplication() { super(); Log.i("tag","application-构造方法"); } /** * 程序创建的时候执行 */ @Override public void onCreate() { super.onCreate(); Log.i("tag","application-onCreate"); } /** * 程序终止的时候执行 */ @Override public void onTerminate() { super.onTerminate(); Log.i("tag","application-onTerminate"); } @Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); Log.i("tag","application-onConfigurationChanged"); } /** * 低内存的时候执行 */ @Override public void onLowMemory() { super.onLowMemory(); Log.i("tag","application-onLowMemory"); } /** * 释放内存的时候执行,避免被系统直接杀掉,提高应用程序的用户体验 * @param level */ @Override public void onTrimMemory(int level) { super.onTrimMemory(level); Log.i("tag","application-onTrimMemory"); } }
2. activity的生命周期:
public class MainActivity extends AppCompatActivity { public MainActivity() { super(); Log.i("tag","activity-构造方法"); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Log.i("tag","activity-onCreate"); FragmentManager fm = getSupportFragmentManager(); FragmentTransaction transaction = fm.beginTransaction(); transaction.add(R.id.ll_container,new Fragment1(),"f1"); transaction.commit(); } @Override protected void onStart() { super.onStart(); Log.i("tag","activity-onStart"); } @Override protected void onRestart() { super.onRestart(); Log.i("tag","activity-onRestart"); } @Override protected void onResume() { super.onResume(); Log.i("tag","activity-onResume"); } @Override protected void onPause() { super.onPause(); } @Override protected void onStop() { super.onStop(); Log.i("tag","activity-onStop"); } @Override protected void onDestroy() { super.onDestroy(); Log.i("tag","activity-onDestroy"); } @Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); Log.i("tag","activity-onSaveInstanceState"); } @Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); Log.i("tag","activity-onConfigurationChanged"); } }
3. fragment的生命周期
public class Fragment1 extends Fragment { public Fragment1() { super(); Log.i("tag","fragment-构造方法"); } /** * fragment创建时调用的方法 * @param savedInstanceState */ @Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); Log.i("tag","fragment-onCreate"); } /** * Fragment附着到Activity上时调用的方法 * @param context */ @Override public void onAttach(Context context) { Log.i("tag","fragment-onAttach"); super.onAttach(context); } /** * Fragment上的view创建时调用的方法 * @param inflater * @param container * @param savedInstanceState * @return */ @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { Log.i("tag","fragment-onCreateView"); return super.onCreateView(inflater, container, savedInstanceState); } /** * 附着到fragment上的activity创建时调用的方法 * @param savedInstanceState */ @Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); Log.i("tag","fragment-onActivityCreated"); } /** * fragment可见 */ @Override public void onStart() { super.onStart(); Log.i("tag","fragment-onStart"); } /** * fragment获取到焦点 */ @Override public void onResume() { super.onResume(); Log.i("tag","fragment-onResume"); } /** * 保存临时数据时调用的方法 * @param outState */ @Override public void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); Log.i("tag","fragment-onSaveInstanceState"); } @Override public void onPause() { super.onPause(); Log.i("tag","fragment-onPause"); } @Override public void onStop() { super.onStop(); Log.i("tag","fragment-onStop"); } @Override public void onDestroyView() { super.onDestroyView(); Log.i("tag","fragment-onDestroyView"); } @Override public void onDestroy() { super.onDestroy(); Log.i("tag","fragment-onDestroy"); } @Override public void onDetach() { super.onDetach(); Log.i("tag","fragment-onDetach"); } }
4. app启动时调用顺序:
04-03 08:18:27.800 9671-9671/com.life.activitylifedemo I/tag: application-构造方法
04-03 08:18:27.807 9671-9671/com.life.activitylifedemo I/tag: application-onCreate
04-03 08:18:27.814 9671-9671/com.life.activitylifedemo I/tag: activity-构造方法
04-03 08:18:27.868 9671-9671/com.life.activitylifedemo I/tag: activity-onCreate
04-03 08:18:27.869 9671-9671/com.life.activitylifedemo I/tag: fragment-构造方法
04-03 08:18:27.872 9671-9671/com.life.activitylifedemo I/tag: fragment-onAttach
04-03 08:18:27.872 9671-9671/com.life.activitylifedemo I/tag: fragment-onCreate
04-03 08:18:27.872 9671-9671/com.life.activitylifedemo I/tag: fragment-onCreateView
04-03 08:18:27.872 9671-9671/com.life.activitylifedemo I/tag: fragment-onActivityCreated
04-03 08:18:27.873 9671-9671/com.life.activitylifedemo I/tag: fragment-onStart
04-03 08:18:27.873 9671-9671/com.life.activitylifedemo I/tag: activity-onStart
04-03 08:18:27.875 9671-9671/com.life.activitylifedemo I/tag: activity-onResume
04-03 08:18:27.876 9671-9671/com.life.activitylifedemo I/tag: fragment-onResume
HOME键按下时调用顺序:
04-03 08:43:43.329 10120-10120/com.life.activitylifedemo I/tag: fragment-onPause
04-03 08:43:43.329 10120-10120/com.life.activitylifedemo I/tag: activity-onPause
04-03 08:43:43.887 10120-10120/com.life.activitylifedemo I/tag: fragment-onSaveInstanceState
04-03 08:43:43.887 10120-10120/com.life.activitylifedemo I/tag: activity-onSaveInstanceState
04-03 08:43:43.887 10120-10120/com.life.activitylifedemo I/tag: fragment-onStop
04-03 08:43:43.887 10120-10120/com.life.activitylifedemo I/tag: activity-onStop
04-03 08:43:43.899 10120-10120/com.life.activitylifedemo I/tag: application-onTrimMemory
04-03 08:43:43.329 10120-10120/com.life.activitylifedemo I/tag: fragment-onPause
04-03 08:43:43.329 10120-10120/com.life.activitylifedemo I/tag: activity-onPause
04-03 08:43:43.887 10120-10120/com.life.activitylifedemo I/tag: fragment-onSaveInstanceState
04-03 08:43:43.887 10120-10120/com.life.activitylifedemo I/tag: activity-onSaveInstanceState
04-03 08:43:43.887 10120-10120/com.life.activitylifedemo I/tag: fragment-onStop
04-03 08:43:43.887 10120-10120/com.life.activitylifedemo I/tag: activity-onStop
04-03 08:43:43.899 10120-10120/com.life.activitylifedemo I/tag: application-onTrimMemory
重新唤醒时方法调用顺序:
04-03 08:20:01.732 9671-9671/com.life.activitylifedemo I/tag: activity-onRestart
04-03 08:20:01.748 9671-9671/com.life.activitylifedemo I/tag: fragment-onStart
04-03 08:20:01.748 9671-9671/com.life.activitylifedemo I/tag: activity-onStart
04-03 08:20:01.752 9671-9671/com.life.activitylifedemo I/tag: activity-onResume
04-03 08:20:01.752 9671-9671/com.life.activitylifedemo I/tag: fragment-onResume
04-03 08:20:01.732 9671-9671/com.life.activitylifedemo I/tag: activity-onRestart
04-03 08:20:01.748 9671-9671/com.life.activitylifedemo I/tag: fragment-onStart
04-03 08:20:01.748 9671-9671/com.life.activitylifedemo I/tag: activity-onStart
04-03 08:20:01.752 9671-9671/com.life.activitylifedemo I/tag: activity-onResume
04-03 08:20:01.752 9671-9671/com.life.activitylifedemo I/tag: fragment-onResume
5. application的作用
通常我们不需要指定application,系统会帮我们创建一个application对象,用来存储一些系统信息。
如果需要自己创建myapplication,需要把自己创建的myapplication在清单文件的application节点下的android:name属性中配置,android:name=“.myapplication”.
application是全局单例的,他的生命周期和app一样长,所以一般在application中定义得到的数据是全局共享数据,可以被该app下所有的activity,fragment等调用共享.