一、学习目标
1
、了解
Android
事件处理机制;
2
、掌握基于监听的事件处理机制和基于回调的事件处理机制;
3
、使用
Configuration
类获取系统的配置信息;
4
、熟练掌握
Handler
的消息传递机制。
5
、掌握
ButterKnife
开源框架
6
、设计一个登录界面
二、环境
1.JDK-15.0.2
以上
2.Android Studio 4.1.2
以上
3.Android 10.0
(
API level 29
)
三、项目实现
1. 项目结构
项目共有 3 个页面,每个页面都含有 Java 逻辑页面以及 activity 页面。
主页面内有两个 class,根据题目要求构建
2. 模块划分
1)主界面
2)ProgressDialogTest:显示进度条
3)SystemInfoActivity:显示系统信息
3. 使用方法:
1)
匿名内部类
t3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
t0.setText("匿名内部类");
}
});
2
)定义一个负责更新的进度的
Handler
// 定义一个负责更新的进度的 Handler
Handler handler = new Handler(){
@Override
public void handleMessage(@NonNull Message msg) {
super.handleMessage(msg);
pd.incrementProgressBy(1);
} };
4. 测试结果

问题思考
[
回答提出的问题,总结实验过程,问题解决方法及实验心得
]
1.
Android
如何避免
UI
“死机”影响用户体验?
在 BoadcastReciever 的 onRecieve()不要执行耗时的操作。执行前台广播的
onRecieve()执行不要超过 10 秒。ContentProvider 的 publish 也是要在 10 秒
内执行完成。
2.
在那些场景下会出现耗时操作,如何避免影响?
在 Android 开发中有很多地方需要避免一些耗时操作,总的来说就是避免在主
线程中执行耗时操作,这些地方如果执行耗时操作容易造成程序崩溃,以下是
总结的一些小点:
1)Service 的 onStartCommand() 和 onBind() 方法中不能执行耗时操作
2)BroadcastReceiver 的 onReceive 方法不能执行耗时操作,因为这个方
法是在主线程执行的,耗时操作会导致 UI 不顺畅,超过 10 秒钟可能会被系统
杀死
3)UI 线程执行耗时操作,可以采用 View.post 方法来执行,或者使用
Handler
4)onPause 中不适合做耗时较长的操作,Activity 的跳转要先执行完前一
个 Activity 的 onPause 方法,如果执行耗时操作会影响 UI 的显示
解决方法:HandlerThread
简单而言,HandlerThread 是一个包含了 Looper 的 Thread,我们可以直接使用
这个 Looper 创建 Handler。
本次实验重点在于监听器的实现方法,在设备信息界面
出现了 bug,导致程序崩溃,目前暂未知悉原因。
Gitee
源码仓库地址
[
项目源码地址
]
https://gitee.com/mo-rugui/XZY2