【android编程】第七讲-android Activity
文章目录
1. 学习指导
本讲主要介绍了Android四大组件之首的Activity。
主要知识点:
- Activity的概念: Activity就是一个有界面的AndroidApp。
- Acitivity 的四种状态: Running、 Paused、 Stopped 和Killed.
- Acitivity的三个生命周期:前台生命周期、可见生命周期和完整生命周期。
- Activity 的属性
- Activity 的创建、启动和关闭
- 多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. 题目记录
-
关于Acitvity下列说法正确的是: B
- A.有可视化的用户界面0.00
- B.可运行的程序
- C.每个应用程序中只能有一个Activity
- D.是Android中唯一的重要组件
-
下列说法正确的是 A
- A.Activity在创建时生成各种控件视图1.00/1.00
- B.Activity随时生成各种视图
- C.Activity在运行时生成各种视图
- D.Activity在创建之前生成各种视图
-
下列哪个不是Activity的显示模式 A
- A.无显示界面
- B.浮动窗口式000
- C.全屏模式
- D.嵌入模式000
-
Paused状态是指 A
- A.被另一个透明Activity覆盖1.00/1.00
- B.Activity与窗口管理器断开
- C.系统不在维护Activity内部状态
- D.仍可和用户交互
-
对于onPause()方法下列说法正确的是 A
- A.用来暂停Activity1.00/1.00
- B.用来停止Activty
- C.用来重构Activity
- D.用来销毁Activity
-
对于onStop()方法下列说法正确的是 D
- A.用来销毁Activity
- B.用来暂停Activity
- C.用来重构Activity
- D.用来停止Activty
-
可视生命周期是指 BC
- A.用户不能在屏幕上看到Activity
- B.onStart()至onStop()1.00/2.00
- C.保留了用来向用户显示Activity资源1.00/2.00
- D.一直在与用户交互
-
完整生命周期是指 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
-
killed状态是指 B
- A.被重新启动前的状态
- B.被移出Activity栈1.00/1.00
- C.可以重新唤醒而无需重新启动的状态
- D.程序被卸载的状态
-
对于onStart()方法下列说法正确的是 A
- A.用来启动Activity1.00/1.00
- B.用来重启Activity
- C.用来恢复Activity
- D.用来创建Activity
-
对于onDestroy()方法说法正确的是 C
- A.用来重构Activity
- B.用来暂停Activity
- C.用来销毁Activity1.00/1.00
- D.用来停止Activty
-
下列哪些是Activity的生命周期 ACD
- A.前台生命周期
- B.后台生命周期
- C.完整生命周期
- D.可视生命周期
-
前台生命周期是指 ABD
- A.Activity位于前台最上面
- B.onResume()至onPause()
- C.这个周期不能接收新的intent
- D.与用户进行交互
- E.不能进行暂停和恢复之间的切换
-
Stopped状态是指 A
- A.Activity不可见1.00/1.00
- B.Activity内的当前状态和成员信息会被安全保存
- C.Activity仍会一直安全地保留在栈中
- D.Activity被关闭
-
对于onCreate方法下列说法正确的是 D
- A.用来恢复Activity
- B.用来启动Activity
- C.用来重启Activity
- D.用来创建Activity