Android同步异步任务、多线程及Handler消息处理机制实例分析


这篇“Android同步异步任务、多线程及Handler消息处理机制实例分析”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Android同步异步任务、多线程及Handler消息处理机制实例分析”文章吧。同步的执行任务:在执行程序时,如果没有收到执行结果,就一直等,不继续往下执行,直到收到执行结果,才接着往下执行。异步的执行任务:在执行程序时,如果遇到需要等待的任务,就另外开辟一个子线程去执行它,自己继续往下执行其他程序。子线程有结果时,会将结果发送给主线程线程:通俗点讲就是一个执行过程。多线程自然就是多个执行过程而已。程序中可能有多个任务,如果只有一个线程,那么就只能一个接一个的执行了。类似同步执行任务。很明显会比较慢,因为只有上一个任务执行完,才能进行下一个。因此,我们需要多线程来分别执行这些任务。这也就是对应了上面说的异步执行任务。类比到我们Android app程序。App一启动,本身就是一个线程,这个线程被称为主线程mainThread,负责显示界面,跟用户交互。另外,界面通常被称为UI(User Interface),因此,主线程也被称为UI线程。两个原则:主线程不能执行网络请求/文件读免费云主机域名写等耗时操作子线程不能执行UI刷新报错:android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.说明只有主线程才能进行View里的UI操作进行交互。Handler机制主要的几个角色:Handler、Message、Looper、MessageQueue异步消息Handler处理机制首先在主线程当中创建一个Handler对象,并重写handleMessage()方法。然后当子线程中需要进行UI操作时,就创建一个Message对象,并通过Handler将这条消息发送出去。之后这条消息就会被添加到MessageQueue队列中等待被处理,而Looper则会一直尝试从MessageQueue中取出待处理消息,最后分发回Handler的handleMessage()方法中。由于Handler是在主线程中创建的,所以此时handleMessage()方法中的代码也会在主线程中运行,所以可以安心的进行UI操作。这样一条Message经过这样一个流程的辗转调用后,也就从子线程进入到了主线程,从而从不能更新UI到能更新UI。Looper和MessageQueue会在UI线程创建时就存在,如果在子线程中就需要自己写Looper。会出现这样一个警告,表示内存泄漏,leak是泄漏的意思。private Handler mHandler=new Handler(Looper.myLooper()){只需要写上Looper.myLooper()就不报警告,表示取主线程自己的Looper。what用于区分是谁发的消息arg1,arg2,obj相当于一个变量,用于标识,区分sendMessage发送有消息的sendEmptyMessage发送空消息,啥都没有,触发一下而已下面是使用Handle机制进行延时6s后将信息显示到文本框上其实在执行new Thread过程中就是一个异步的比如:主线程会先执行 Thread thread = new Thread(new Runnable() {和thread.start();Toast.makeText(this, “任务完成!”, Toast.LENGTH_SHORT).show();而 @Override public void run() {String stringFromNet = getStrFromNet();tvContent.setText(stringFromNet);}会当主线程执行到了thread.start();的时候子线程才会去执行在子线程(或新线程处理Handler消息的方法)1.调用Looper的prepare()方法为当前线程创建Looper对象,创建Looper对象时,它的构造器会创建与之配套的MessageQueue。2.有了Looper之后,创建Handler子类的实例,重写handlerMessage()方法,该方法负责处理来自其他线程的消息。3.调用Looper的loop()方法启动Looper。以上就是关于“Android同步异步任务、多线程及Handler消息处理机制实例分析”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注百云主机行业资讯频道。

相关推荐: Vue3中的script setup语法糖怎么使用

这篇文章主要介绍了Vue3中的script setup语法糖怎么使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Vue3中的script setup语法糖怎么使用文章都会有所收获,下面我们一起来看看吧。组合式 API:setup…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 02/25 22:29
下一篇 02/25 22:33

相关推荐