超牛链AI Logo

超牛链博客: 读书|骑行|笔记分享
user
老王不响
@关于博主
2015-08-10

Unity3D项目实战笔记(2):Android系统的多线程 5 mins read


书到用时方恨少!

《Android编程权威指南》去年翻了半个月,仅仅看了前几章。

产出是: 自己搭建了Android的开发环境、照着书写了几个Hello World的App,并发布到Android真机上、而最有纪念意义的就是产出了3篇博客:

随后一年,这本Android开发的宝典落了一层灰!

最近,手游项目中要用到Android SDK接入的技能,才恍然发现需要补补Android的基础知识,随即翻看了3篇博客,而后打开尘封已久的宝典,又“挑灯夜战”:晚上下班后,匆匆扒两口饭就翻书学习、记笔记;第二天在工作中用于实践。 自我感觉,挺好的。

有目的的学习,威力无穷也!

本文就Android多线程进行笔记整理之。

Android系统中,主线程(UI线程)不能访问网络,如果违规这么干,则app会很有可能Crash的,我遇到了多次,故多线程是必须要掌握的一项Android技能。

 

Android的多线程分3个:
  • 短时间运行的 AsyncTask

    AsyncTask可定义在主线程内,是一种最简单的Android多线程实现方法,可在AsyncTask内调用UI主线程函数。

可通过如下代码定义AsyncTask,其中@Override的函数是AsyncTask预定义好的,直接重载即可。

public class aaa extends AsyncTask<P1, P2, P3>  //P1是Input参数,P2是更新用,P3是Output参数

{

    @Override P3 doInBackground(P1) //子线程的核心逻辑函数

    @Override OnPostExecute(P3);   //线程处理完毕后收尾函数,可访问主线程

    @Override OnProgressUpdate(P2); //可访问主线程,一般用于如更新ProgressBar状态等

}

 

取消AsyncTask用Cancel(bool)

 

在主线程中,启动线程用这行代码:

new aaa().Execute().

  • 专用后台线程 HandlerThread

    HandlerThread是Android系统提供的主要后台线程, 相对简单的AsyncTask,HandlerThread涉及到了Message、Looper、Handler、Queue概念。

    Looper扮演着一个Handler和消息队列之间通讯桥梁的角色。程序组件首先通过Handler把消息传递给Looper,Looper把消息放入队列。 Looper也把消息队列里的消息广播给所有的Handler,Handler接受到消息后调用handleMessage进行处理。

Looper.myLooper();获得当前的Looper

Looper.getMainLooper () 获得UI线程的Lopper

 

  • 简单的线程 runOnUiThread(Runnable)

activity.runOnUiThread(new Runnable()

{
@Override public void run()

{ // TODO Auto-generated method stub

int i = 30; textView.setText(""+i+" s");

} } });

2015-08-10
老王 加冕为王
老王,工作了19年的软件工程师、连续创业者、Blogger(since 2013),微软.net MVP获得者(2015~2016)、 Unity3D UVP获得者 (2017)。 曾任上市公司研发主管、知名外企Social Media Marketing 。 现专注于Instagram、SEO等海外社交媒体营销技术研究与实践。 四十而立的我,有2个可爱的宝宝,喜好骑行、读书、木工, 尤其喜好历史、科幻书籍。
友情链接
超牛链 57天前 2024年3月6日 15:16

恭喜占到沙发,让我再等一等吧

超牛链 57天前 2024年3月6日 15:16

沙发福利不容错过,等待你的到来

最新文章

超牛链AI:Ollama本地LLM LangChain RAG小试--算力为王

算力为王时代: CPU --> GPU

GPU这...
【发刊词】超牛链AI: hello world.

​公元2024年,比2023年的AI风暴,更加寒噤。

《一句顶一万句》 遇见一个能说的上话的人不易

2024年 甲辰龙年春节假期,我看了2本小说,茅盾文学...

2023个人总结: AI、骑行、青椒炒肉丝

后疫情时代,刚褪去口罩。又迎来经济消费降级,我的客户同...

热门文章

C#程序员整理的Unity 3D笔记(六):Git源码管理

对程序员而言,写的代码用源码管理系统管理起来,非常方便...

且行且思:记录一次西安城墙国际马拉松---8公里

百度搜索,输入西安城墙马拉松,有7万2千个结果。 实际...

骑行故事初心--自由的御风而行

2023年,三年疫情过后第一个春天,我开始了骑行: 空...

Unity3D for VR 学习(7): 360&deg;全景照片

    在VR应用中,有一个相对简单的虚拟现实体验,那...

相关【技术杂谈】文章

查看所有相关【技术杂谈】文章
搭建Squid3 密码账号IP代理

上文中,说明了 Squid3 IP Proxy 隐藏原IP,这里就搭建Squid 3密码账号IP代理进行整理,涉及...

不用插件,js脚本显示星号密码

不用插件,js脚本显示星号密码

以前,我是用Chrome插件做这个这的--显示星号密码的。 今天,分享一个不用插件...

执行MySQL报错

今天新采购了柒比贰WordPress主题,安装主题时候报错: MySQL命令行使用sql语句进行建表时,MySQL...