`
童梦新苑
  • 浏览: 40126 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

android GUI线程安全

阅读更多

Activity:运行于主线程。因Android的GUI是非线程安全的,所有界面相关操作必须在主线程中完成,又因为即时响应的需要,主线程中不能进行耗时长的操作,如果有些操作既耗时又需要操作界面,就用消息机制吧。开子线程处理耗时操作,需要操作界面时给主线程发消息,把界面操作限制在主线程中。好在Android的消息机制还是相当方便的。

Service:服务本体运行于主线程,但响应函数(就是onBind返回的对象的接口啦)就复杂了。如果跟客户在同一个进程的话,就直接在客户的线程中运行,否则就从服务所在进程维护的线程池里取出一个线程来运行,如果同时有多个进程请求服务的话,就同时产生多个线程来响应。所以,想要提供给别人使用的服务必须做成线程安全的,否则就不要提供第三方使用的接口好啦,免得别人自做多情。

Content provider:跟服务相似。不过数据提供者的响应函数是固定的:query(), insert(), delete(), update(), and getType()。数据库应该是安全的,自己做的就要加倍小心啦。

Broadcast receiver:运行于主线程。它就一个方法,运行时跟当前Activity一样,优先级超高,是不能被杀死的,但方法一返回,就打入冷宫,随时可能被害,即便它运行时派生了子线程也不能母凭子贵,母子双双被害,更是人间惨剧。所以receiver中通常启动服务来做耗时的后台操作,启动Activity或任务栏通知来做界面响应。

分享到:
评论

相关推荐

    aria-ng-gui-android:一个 Aria2 图形界面安卓客户端 | An Aria2 GUI Android App

    AriaNg GUI for Android 一个 Aria2 图形界面安卓应用程序 特性 集成aria2c 多线程下载 支持PT/BT 多语言支持 支持配置多个 aria2 RPC 使用响应式布局, 支持各种计算机或移动设备 友好的界面交互 支持暗色模式 ...

    Android高级编程--源代码

    8.2.2 为GUI操作同步线程 261 8.2.3 将Earthquake Service移动到后台线程 262 8.3 创建一个Toast 263 8.3.1 定制Toast 263 8.3.2 在工作(worker)线程中使用Toast 265 8.4 Notification简介 266 8.4.1 ...

    《Android高级编程》

    8.2.1 创建新的线程 8.2.2 为GUI操作同步线程 8.2.3 将Earthquake Service移动到后台线程 8.3 创建一个Toast 8.3.1 定制Toast 8.3.2 在工作(worker)线程中使用Toast 8.4 Notification简介 8.4.1 Notification ...

    Android服务Service详解

    本章内容服务(Service)是Android系统中4个应用程序组件之一(其他的组件详见3.2节的内容)。服务主要用于两个目的:后台运行和跨进程访问。... 在线程中更新GUI组件  AIDL服务  在AIDL服务中传递复杂的数据  

    Android开发艺术探索.任玉刚(带详细书签).pdf

    第11章 Android的线程和线程池 391 11.1 主线程和子线程 392 11.2 Android中的线程形态 392 11.2.1 AsyncTask 392 11.2.2 AsyncTask的工作原理 395 11.2.3 HandlerThread 402 11.2.4 IntentService 403 11.3 ...

    Android开发艺术探索

    第11章 Android的线程和线程池 / 391 11.1 主线程和子线程 / 392 11.2 Android中的线程形态 / 392 11.2.1 Async Task / 392 11.2.2 Async Task的工作原理 / 395 11.2.3 Handler Thread / 402 11.2.4 ...

    新版Android开发教程.rar

    ----------------------------------- Android 编程基础 1 封面----------------------------------- Android 编程基础 2 开放手机联盟 --Open --Open --Open --Open Handset Handset Handset Handset Alliance ...

    JAVA+android学习思维导图.7z

    1、GUI(Abstract Window Tookit).mmap 2、Java中的注解.mmap 3、Java网络编程.mmap 4、Java中的反射.mmap 5、Java中级总结.mmap 6、Swing和事件处理.mmap 7、多线程.mmap 8、IO.mmap 9、Collection.mmap 10、搜索...

    Android高级编程.pdf

    8.2.2 为GUI操作同步线程 8.2.3 将Earthquake Service移动到后台线程 8.3 创建一个Toast 8.3.1 定制Toast 8.3.2 在工作(worker)线程中使用Toast 8.4 Notification简介 8.4.1 Notification Manager简介 8.4.2 创建...

    android开发艺术探索高清完整版PDF

    / 375 10.2.2 消息队列的工作原理 / 380 10.2.3 Looper的工作原理 / 383 10.2.4 Handler的工作原理 / 385 10.3 主线程的消息循环 / 389 第11章 Android的线程和线程池 / 391 11.1 主线程和子线程 / 392 11.2 ...

    ux操作系统性能调优的方法

     2、Shutting down the GUI (关闭GUI)  3、Changing kernel parameters (改变内核参数)  4、Kernel parameters (内核参数)  5、Tuning the processor subsystem(处理器子系统调优)  6、Tuning the memory ...

    Android子线程与更新UI问题的深入讲解

    首先和其他许多的GUI库一样,Android的UI线程是不安全的。所以下面这篇文章主要给大家介绍了关于Android子线程与更新UI问题的相关资料,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧

    Android服务Service_详解

    Service的生命周期 绑定Activity和Service 在BroadcastReceiver中启动Service 系统服务 时间服务 在线程中更新GUI组件 AIDL服务 在AIDL服务中传递复杂的数据

    Qt5-Python-GUI-Programming-Cookbook:Qt5 Python GUI编程手册,由Packt发行

    Qt5 Python GUI编程手册 这是Packt发布的的代码库。 **使用PyQt构建响应Swift...O操作和线程处理在UI中使用网络概念,Internet浏览和Google Maps在GUI中使用图形渲染并实现动画使您的GUI应用程序与Android和iOS设备兼容

    jadx-gui(反编译工具) v0.6.1

     一、减少处理线程数(-j选项)  二、增加最大java堆大小:  命令行(linux的例子):JAVA_OPTS="-Xmx4G" jadx -j 1 some、apk  编辑'jadx'脚本(Windows上的jadx、bat)并设置更大的堆大小: DEFAULT_JVM_OPTS=...

    python GUI库图形界面开发之PyQt5 UI主线程与耗时线程分离详细方法实例

    在做界面开发时,无论是移动端的Android,还是我们这里讲的PyQt5,经常会有一个界面开发准则,那就是UI主线程与耗时子线程一定要分开,主线程负责刷新界面,耗时操作,如网络交互、磁盘IO等,都应该放在子线程里执行...

    Android-Things-RF24:nRF24L01(+)2.4GHz无线收发器的RF24的Android-Things端口

    当前没有GUI,通过更改后台线程中启用的功能来更改示例,一次只能使用一个,因此不必费心启用更多功能。正在安装添加回购 ,例如在您的build.gradle基础中allprojects { repositories { jcenter() google() maven {...

Global site tag (gtag.js) - Google Analytics