您的位置:

Android Activity启动流程

一、Activity概述

Android应用程序是由许多Activity组成的。一个Activity代表一个屏幕上的窗口。用户与应用程序交互时,Activity会接收用户的输入并处理屏幕输出。Activity的启动流程是Android应用程序中至关重要的一个环节。

二、Activity的生命周期

一个Activity的生命周期可以分为四个阶段:

1. 创建阶段

public class MyActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_my);
    }
}

在创建阶段中,首先调用了onCreate()方法。在这个方法中,我们可以初始化Activity,比如设置布局文件、获取控件等。

2. 运行阶段

public class MyActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_my);
    }

    @Override
    protected void onStart() {
        super.onStart();
        // Activity 准备开始
    }

    @Override
    protected void onResume() {
        super.onResume();
        // Activity 进入前台
    }
}

在运行阶段中,Activity已经准备好了。在Activity变成前台窗口之前,onStart()方法会被调用,在Activity变成前台窗口之后,onResume()方法会被调用。

3. 暂停阶段

public class MyActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_my);
    }

    @Override
    protected void onStart() {
        super.onStart();
        // Activity 准备开始
    }

    @Override
    protected void onResume() {
        super.onResume();
        // Activity 进入前台
    }

    @Override
    protected void onPause() {
        super.onPause();
        // Activity 进入后台
    }
}

在暂停阶段中,onPause()方法会被调用。在这个方法中,我们可以保存一些需要持久化的数据,比如用户输入的内容。

4. 停止阶段

public class MyActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_my);
    }

    @Override
    protected void onStart() {
        super.onStart();
        // Activity 准备开始
    }

    @Override
    protected void onResume() {
        super.onResume();
        // Activity 进入前台
    }

    @Override
    protected void onPause() {
        super.onPause();
        // Activity 进入后台
    }

    @Override
    protected void onStop() {
        super.onStop();
        // Activity 被停止
    }
}

在停止阶段中,onStop()方法会被调用。在这个方法中,我们可以释放一些资源。

三、Activity之间的跳转

在Android应用程序中,Activity之间的跳转是非常普遍的。Activity之间的启动方式有两种:

1. 显式启动

Intent intent = new Intent(this, MyActivity.class);
startActivity(intent);

上述代码中,我们使用了一个Intent对象,将要启动的Activity的类名传递给了Intent对象。然后调用startActivity()方法来启动Activity。

2. 隐式启动

Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("http://www.baidu.com"));
startActivity(intent);

这里我们使用了一个Intent对象,并将其设置为ACTION_VIEW类型,同时将一个Uri对象传递给了Intent对象。系统会根据Uri的Scheme、Type、Category等属性,匹配到适合的Activity来启动。

四、Activity启动流程

在一个Activity启动另一个Activity时,系统必须执行以下操作:

1. 创建要启动的Activity对象

系统会根据Intent指定的类名,使用Java反射机制创建一个Activity对象。

2. 构建要启动的Activity的环境

系统会调用ActivityThread的handleLaunchActivity()方法,来构建要启动的Activity的环境。

final ActivityClientRecord r = new ActivityClientRecord();
r.token = appToken;
r.ident = ident;
r.intent = intent;
r.isProfiling = (flags&Profiler.FLAG_PROFILING)!=0;
...
Activity a = performLaunchActivity(r, customIntent);

3. 调用onCreate()方法

系统会调用Activity的onCreate()方法,来进行一些初始化工作。

public class MyActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_my);
    }
}

4. 加载布局文件

系统会解析布局文件,并将解析后的视图加入到Activity的View树中。

setContentView(R.layout.activity_my);

5. 构建OptionsMenu

如果Activity需要显示OptionsMenu,系统会调用Activity的onCreateOptionsMenu()方法,来构建要显示的Menu。

public class MyActivity extends Activity {
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.activity_my_menu, menu);
        return true;
    }
}

6. 生命期回调方法

系统会依次调用Activity的各个生命期回调方法,包括onStart()、onResume()、onPause()、onStop()、onDestroy()等。

五、总结

Android应用程序中Activity是核心组件之一,它的启动流程至关重要。本文对Activity的生命周期、Activity之间的跳转以及Activity的启动流程进行了详细阐述。

Android Activity启动流程

2023-05-24
Android Activity启动流程解析

在Android应用开发过程中,Activity是重要的组件之一。本文将为大家详细解析Android Activity启动流程,帮助读者深入理解Activity的启动过程。 一、Activity启动方

2023-12-08
控制Activity的启动流程

一、启动模式介绍 首先,要了解Activity的启动流程,必须先了解Activity的启动模式。Android提供了四种启动模式:standard、singleTop、singleTask和singl

2023-12-08
Android App启动流程详解

2023-05-18
Android应用程序启动:背后的过程

2023-05-14
Android Activity的四种启动模式及其区别

2023-05-14
Android Splash: 详解安卓启动页

2023-05-18
深入解析Android中的Activity启动模式——Sin

2023-05-18
Android重启应用

2023-05-18
Python实现Android应用的延迟启动

2023-05-14
Android应用快速启动的关键-Zygote进程解析

Android应用在启动过程中,Zygote进程起到了至关重要的作用。Zygote进程是一个特殊的进程,它会在系统启动时被创建,并始终保持运行状态,负责孵化新的进程。在使用应用时,Zygote进程可以

2023-12-08
印象笔记记录java学习(Java成长笔记)

2022-11-12
Android Studio APK快速创建与发布流程详解

2023-05-14
Android启动流程解析:完整地分解Android系统启动

2023-05-14
Android Activity框架详解

2023-05-22
Android开机自启动详解

2023-05-19
Android Activity的页面跳转实现

2023-05-14
Android开机启动详解

2023-05-23
深入解析Android系统启动原理

2023-05-14
Android启动白屏问题详解

2023-05-18