安卓API指南之Activity回顾

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/cysion1989/article/details/78413942

本系列的文章全部为学习摘要,不偏重各种细节展示,更多的是安卓体系重要节点的罗列,并适时加入少量自己的理解分析,以便能快速的回顾安卓体系结构和那些重要的技术点。

每个 Activity 都会获得一个用于绘制其用户界面的窗口。窗口通常会充满屏幕,但也可小于屏幕并浮动在其他窗口之上。比如透明主题或者Dialog主题的Activity。

一个应用通常由多个彼此松散联系的 Activity 组成。Activity的管理一般是系统通过任务和返回栈来进行的,这个后面在记录。

  • 创建 Activity
    创建 Activity,您必须创建 Activity 的子类(或使用其现有子类)。必须在清单文件里声明该类。例如:
<activity android:name=".ExampleActivity" android:icon="@drawable/app_icon">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

一般必须要是实现的方法:onCreate()–在此方法内调用 setContentView(),以定义 Activity 用户界面的布局;;onPause()–此方法是用户离开 Activity 的第一个信号。

  • 启动Activity以及获得结果
//启动
Intent intent = new Intent(Intent.ACTION_SEND);
intent.putExtra(Intent.EXTRA_EMAIL, recipientArray);
startActivity(intent);

//启动获得结果
private void pickContact() {
    // Create an intent to "pick" a contact, as defined by the content provider URI
    Intent intent = new Intent(Intent.ACTION_PICK, Contacts.CONTENT_URI);
    startActivityForResult(intent, PICK_CONTACT_REQUEST);
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    // If the request went well (OK) and the request was PICK_CONTACT_REQUEST
    if (resultCode == Activity.RESULT_OK && requestCode == PICK_CONTACT_REQUEST) {
        /......
        }
    }
}
  • 实现生命周期回调
    在api14+时,系统在Application里添加了记录Activity生命周期的方法ActivityLifecycleCallbacks,挺实用的,还可以根据onstart和onStop的切换来实时监控应用是否处于后台。
    其它有关的来个表更合适。

这里写图片描述

是否能在事后终止?列中标记为“否”的方法可从系统调用它们的一刻起防止承载 Activity 的进程被终止。也就是非极端情况下,在执行这些“否”方法时,该Activity不会被回收。

  • 保存 Activity 状态
    当Acty被非正常销毁时,系统会先调用 onSaveInstanceState()来保存一些数据。 当系统重建该 Activity,将会将包含数据的 Bundle 同时传递给 onCreate() 和 onRestoreInstanceState()。您可以使用上述任一方法从 Bundle 提取您保存的状态并恢复该 Activity 状态。如果没有状态信息需要恢复,则传递给您的 Bundle 是空值(如果是首次创建该 Activity,就会出现这种情况)。

注意:系统调用 onSaveInstanceState(),它会在调用 onStop() 之前,并且可能会在调用 onPause() 之前进行调用。

  • 处理配置变更
    有些设备配置可能会在运行时发生变化(例如屏幕方向、键盘可用性及语言)。 发生此类变化时,Android 会重建运行中的 Activity(系统调用 onDestroy(),然后立即调用 onCreate())。处理此类重启的最佳方法是利用onSaveInstanceState() 和 onRestoreInstanceState()(或 onCreate())保存并恢复 Activity 的状态。具体会在后面的文章中记录。

作者: 刘咸尚

  • 协调 Activity
    当 Activity A 启动 Activity B 时一系列操作的发生顺序:
    -> Activity A 的 onPause() 方法执行。
    -> Activity B 的 onCreate()、onStart() 和 onResume() 方法依次执行。(Activity B 现在具有用户焦点。)
    -> 如果 Activity A 在屏幕上不再可见,则其 onStop() 方法执行。

猜你喜欢

转载自blog.csdn.net/cysion1989/article/details/78413942
今日推荐