【android编程】第七讲-android Activity

【android编程】第七讲-android Activity

1. 学习指导

本讲主要介绍了Android四大组件之首的Activity。

主要知识点:

  1. Activity的概念: Activity就是一个有界面的AndroidApp。
  2. Acitivity 的四种状态: Running、 Paused、 Stopped 和Killed.
  3. Acitivity的三个生命周期:前台生命周期、可见生命周期和完整生命周期。
  4. Activity 的属性
  5. Activity 的创建、启动和关闭
  6. 多Activity技术:使用Bundle传递数据、调用另-一个Activity并返回结果等。

2. Activity生命周期

**完整生命周期:**完整生命周期始于onCreate方法回调,止于onDestroy方法回调
**可见周期:**可见周期始于onStart方法回调,止于onStop方法回调
**前台周期:**前台周期始于onResume方法回调,止于onPause方法回调

下面简单介绍一下各个生命周期方法:
onCreate 生命周期的第一个方法,表示Activity正在创建(启动)。特别说明:若您在该方法内调用finish方法,则会立即出发onDestroy回调,其他生命周期不会执行

onRestart 该方法触发的前提:onStop方法被调用。onStop方法被调用而导致的Activity不可见到Activity再次可见时被调用。该方法回调之后系统会相继触发onStart和onResume方法。

onStart Activity可见时调用(此时Activity尚未处于前台):在onCreate方法之后或由onStop方法被调用而导致的Activity不可见到Activity再次可见时被调用

onResume 该方法的回调标识Activity处于前台。官方文档指明,这里比较适合动画启动及排他性设备访问(如相机)等

onPause Activity即将进入后台时回调此方法。需要特别注意的是,若Activity A启动Activity B,则Activity A的onPause方法回调完成后,Activity B才会创建,因此不要在该回调方法中做耗时操作。

onStop Activity由可见到不可见时回调此方法

onDestroy 生命周期的最后一个方法,表示Activity即将被销毁。官方文档指明,在某些情况下,系统会简单粗暴的杀掉Activity的宿主进程,因此我们不应该依赖此方法做数据存储工作,可在此方法中做资源释放操作

在这里插入图片描述

对于onStop方法,可能误认为Activity进入后台时回调该方法,其实进入后台时回调的是onPause方法,不可见时回调onStop方法;也有误以为onResume方法回调意味着可以进行交互,其实我们应该以public void onWindowFocusChanged (boolean hasFocus)回调中的hasFocus参数为依据来判定是否可以进行交互。

Activity可见与否与其是否处于前台是两回事,onStart 与 onStop 配对描述Activity是否可见;onPause 与
onResume 配对描述Activity是否处于前台。Activity可见并不意味着可以交互,同样的其处于前台也未必可以交互。直接的例子是,若Activity展示了Dialog,此时Activity仍处于前台,但我们却不能与Activity交互

3. 创建Activity

重写onCreate(Bundle savedInstanceState) 并指定布局文件

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main); //指定布局文件
    }

4. 配置Activity

打开AndroidManifest.xml文件

<application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <!--这里有没有点都一样,不在这个包里需要加路径 -->
            <!--android:name=".MainActivity"是实现类 -->
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    <activity></activity> <!--新加的写在这里 -->
    </application>

5. 启动和关闭Activity

启动 public void startActivity(Intent intent)

Intent intent = new Intent(MainActivity.this,DetailActivity.class);

startActivity(intent);

关闭 public void finish()

6. Activity 传递数据

intent方法

//发送
Intent intent = new Intent(MainActivity.this,DetailActivity.class);
Bundle bundle = new Bundle();
bundle.putCharSequence("user",user);
intent.putExtras(bundle);  //bundle对象添加到Intent对象
startActivity(intent);
//获取
Intent intent = getIntent();
Bundle bundle = intent.getExtras();
bundle.getString("user");

7. Activity 返回数据

startActivityForResult(intent,CODE); //第二个是 结果码参数  requestCode
setResult(code,intent);  //设置返回的结果码  resultCode
finish();
重写
protected void onActivityResult(int requestCode,int resultCode,Intent data){

}

8. 题目记录

  1. 关于Acitvity下列说法正确的是: B

    • A.有可视化的用户界面0.00
    • B.可运行的程序
    • C.每个应用程序中只能有一个Activity
    • D.是Android中唯一的重要组件
  2. 下列说法正确的是 A

    • A.Activity在创建时生成各种控件视图1.00/1.00
    • B.Activity随时生成各种视图
    • C.Activity在运行时生成各种视图
    • D.Activity在创建之前生成各种视图
  3. 下列哪个不是Activity的显示模式 A

    • A.无显示界面
    • B.浮动窗口式000
    • C.全屏模式
    • D.嵌入模式000
  4. Paused状态是指 A

    • A.被另一个透明Activity覆盖1.00/1.00
    • B.Activity与窗口管理器断开
    • C.系统不在维护Activity内部状态
    • D.仍可和用户交互
  5. 对于onPause()方法下列说法正确的是 A

    • A.用来暂停Activity1.00/1.00
    • B.用来停止Activty
    • C.用来重构Activity
    • D.用来销毁Activity
  6. 对于onStop()方法下列说法正确的是 D

    • A.用来销毁Activity
    • B.用来暂停Activity
    • C.用来重构Activity
    • D.用来停止Activty
  7. 可视生命周期是指 BC

    • A.用户不能在屏幕上看到Activity
    • B.onStart()至onStop()1.00/2.00
    • C.保留了用来向用户显示Activity资源1.00/2.00
    • D.一直在与用户交互
  8. 完整生命周期是指 ABCD

    • A.在onCreate()中设置所有“全局”状态完成初始化0.50/2.00
    • B.本生命周期包含了可视生命周期0.50/2.00
    • C.onCreate()至onDestroy()0.50/2.00
    • D.在onDestroy()中释放所有资源0.50/2.00
  9. killed状态是指 B

    • A.被重新启动前的状态
    • B.被移出Activity栈1.00/1.00
    • C.可以重新唤醒而无需重新启动的状态
    • D.程序被卸载的状态
  10. 对于onStart()方法下列说法正确的是 A

    • A.用来启动Activity1.00/1.00
    • B.用来重启Activity
    • C.用来恢复Activity
    • D.用来创建Activity
  11. 对于onDestroy()方法说法正确的是 C

    • A.用来重构Activity
    • B.用来暂停Activity
    • C.用来销毁Activity1.00/1.00
    • D.用来停止Activty
  12. 下列哪些是Activity的生命周期 ACD

    • A.前台生命周期
    • B.后台生命周期
    • C.完整生命周期
    • D.可视生命周期
  13. 前台生命周期是指 ABD

    • A.Activity位于前台最上面
    • B.onResume()至onPause()
    • C.这个周期不能接收新的intent
    • D.与用户进行交互
    • E.不能进行暂停和恢复之间的切换
  14. Stopped状态是指 A

    • A.Activity不可见1.00/1.00
    • B.Activity内的当前状态和成员信息会被安全保存
    • C.Activity仍会一直安全地保留在栈中
    • D.Activity被关闭
  15. 对于onCreate方法下列说法正确的是 D

    • A.用来恢复Activity
    • B.用来启动Activity
    • C.用来重启Activity
    • D.用来创建Activity

关于生命周期详见前面 2.Activity生命周期

发布了83 篇原创文章 · 获赞 37 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/xbean1028/article/details/104904005
今日推荐