Android中Handler的使用
来源:互联网 发布:数据库第五版答案 编辑:程序博客网 时间:2024/06/06 18:01
Handler的作用:用于线程和线程之间通信,可以看成一个生产者消费者模型
// 产品 Message
// 仓库 MessageQueue
// 循环 Looper
// 物流 Handler
// 回调接口 Handler.Callback
30.1Handler介绍:
在Android开发中,我们经常会使用单独的线程来完成某些操作,比如用一个线程完成从网上下载的图片显示在ImageView上,在多线程操作时,Android中必须保证以下两点:
1:不要阻塞UI线程
2:不要再UI线程之外访问Android UI 工具包
30.2:Handler常用API
使用Handler可以完成以下两点的工作
1:消息调度和在将来的某个时间点执行一个Runnable
2:多个任务加入到一个队列中执行
使用Handler可以完成以下两点的工作
1:消息调度和在将来的某个时间点执行一个Runnable
2:多个任务加入到一个队列中执行
建一个Handler handler = newHandler(){
重写方法:switch(msg.what){
Case 100:
设置代码内容
break;
}
}
handler.sendEmptyMessage(100);//发送一个空消息,标记为100
完整代码如下:
Message message = handler.obtainMessage();
message.what= 101;
message.obj= "要存储的消息";
handler.sendMessage(message);
handler.sendEmptyMessageAtTime(200,System.currentTimeMillis()+3000);
handler.sendEmptyMessageAtTime(200,3000);//延迟多少时间发送
30.3Handler内部实现原理
1:Message对象,表示要传递的一个消息
2:MessageQueue对象,表示存放消息的消息队列,先进先出原则
3:Looper负责管理当前线程的消息队列(MessageQueue)
4:Handler负责将消息push到消息队列中,以及接收到Looper从消息队列中获取的消息
30.4:Handler内存泄漏问题分析
1:定义一个内部内时,会默认拥有外部类对象的引用,所以建议使用内部 类时最好定义为静态内部类(相当于一个外部内,不依赖外部类)
2:引用的强弱,强引用:new 的对象都是强引用,不会被回收
-->软引用:如果你的引用引用到另外一个对象,当内存不足时将会回收软引用
-->弱引用:如果你引用的对象不存在,将拿不到
30.5:使用Handler实现APP的闪屏页
如何设置全屏:theme = “@android:style/Theme.DeviceDefault.Light.NoActionbar.Fullscreen
闪屏页的作用
1:提供一个欢迎界面
2:初始化工作
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_otherscreen);
handler.postDelayed(new Runnable() {
@Override
public void run() {
startMainActivity();
}
},3000);
}
private void startMainActivity() {
Intent intent = new Intent(this, MainActivity.class);
startActivity(intent);
}
private Handler handler = new Handler();
- Android中Handler的使用
- Android中Handler的使用
- Android中Handler的使用
- Android中Handler的使用
- Android中Handler的使用
- Android中Handler的使用
- Android中Handler的使用
- Android中Handler的使用
- Android中Handler的使用
- android中handler的使用
- android中handler的使用
- Android中Handler的使用
- Android中Handler的使用
- Android中handler的使用
- Android 中 Handler 的使用
- Android中Handler的使用
- Android中Handler的使用
- Android中使用handler
- Android中AutoCompleteTextView的…
- Invariant Violation:Application 项目名 has not been registered.
- Android中Dialog的使用
- source_Insight新建工程
- Android中日期和时间的使用
- Android中Handler的使用
- Android中AsyncTask的讲解(动态下…
- 如何解决Andoroid Studio出现…
- Android Studio如何配置夜神模拟器
- Android Studio的快捷键&nbsp…
- Leetcode 80 Remove Duplicates from Sorted Array II
- 关于listview嵌套gridview
- 一个圆等分的坐标
- 静态编译、动态编译、静态链接库和动态链接库理解