Fragment,activity,Application的生命周期,app启动和HOME按下时生命周期调用顺序

本文详细探讨了Android中Fragment、Activity和Application的生命周期,包括它们在应用启动和用户按下Home键时的生命周期回调顺序。理解这些生命周期对于优化应用性能和处理用户交互至关重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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: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等调用共享.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值