5.UI线程和非UI线程的交互方式
http://blog.csdn.net/yujun411522/article/details/46041637
本文出自:【yujun411522的博客】
这里说的交互方式应该指的是如何在非UI线程中修改UI线程中的组件。
05-14 15:24:10.519: E/ActivityManager(499): Reason: Broadcast of Intent { act=com.service.ACTION flg=0x10 cmp=com.example.servicedemo/.MyReceiver }
Cmd line: com.example.servicedemo
DALVIK THREADS:
(mutexes: tll=0 tsl=0 tscl=0 ghl=0)
"main" prio=5 tid=1 TIMED_WAIT
| group="main" sCount=1 dsCount=0 obj=0x40ae3490 self=0x15cad58
| sysTid=5085 nice=0 sched=0/0 cgrp=default handle=1074472136
| schedstat=( 0 0 0 ) utm=17 stm=6 core=0
at java.lang.VMThread.sleep(Native Method)
at java.lang.Thread.sleep(Thread.java:1047)
at java.lang.Thread.sleep(Thread.java:1029)
at com.example.servicedemo.MyReceiver.onReceive(MyReceiver.java:19)
// PowerManager.reboot() can block for a long time, so ignore ANRs while shutting down.
if (mShuttingDown) {
Slog.i(TAG, "During shutdown skipping ANR: " + app + " " + annotation);
return;
} else if (app.notResponding) {
Slog.i(TAG, "Skipping duplicate ANR: " + app + " " + annotation);
return;
} else if (app.crashing) {
Slog.i(TAG, "Crashing app skipping ANR: " + app + " " + annotation);
return;
}
//.....
StringBuilder info = mStringBuilder;
info.setLength(0);
info.append("ANR in ").append(app.processName);
if (activity != null && activity.shortComponentName != null) {
info.append(" (").append(activity.shortComponentName).append(")");
}
if (annotation != null) {
info.append("Reason: ").append(annotation).append("\n");
}
if (parent != null && parent != activity) {
info.append("Parent: ").append(parent.shortComponentName).append("\n");
}
if (MONITOR_CPU_USAGE) {
updateCpuStatsNow();
synchronized (mProcessStatsThread) {
cpuInfo = mProcessStats.printCurrentState(anrTime);
}
info.append(processStats.printCurrentLoad());
info.append(cpuInfo);
}
//anr之后cpu负载信息
info.append(processStats.printCurrentState(anrTime));
boolean showBackground = Settings.Secure.getInt(mContext.getContentResolver(),
Settings.Secure.ANR_SHOW_BACKGROUND, 0) != 0;
if (!showBackground && !app.isInterestingToUserLocked() && app.pid != MY_PID) {
Slog.w(TAG, "Killing " + app + ": background ANR");
EventLog.writeEvent(EventLogTags.AM_KILL, app.pid,
app.processName, app.setAdj, "background ANR");
Process.killProcessQuiet(app.pid);//杀死进程
return;
}
Message msg = Message.obtain();
HashMap map = new HashMap();
msg.what = SHOW_NOT_RESPONDING_MSG;
msg.obj = map;
map.put("app", app);
if (activity != null) {
map.put("activity", activity);
}
mHandler.sendMessage(msg);
synchronized (ActivityManagerService.this) {
mContext, proc, (ActivityRecord)data.get("activity"));
d.show();//显示anr对话框
}
} break;
5.UI线程和非UI线程的交互方式相关推荐
- android 组件 线程,Android UI线程和非UI线程
UI线程及Android的单线程模型原则 当应用启动,系统会创建一个主线程(main thread). 这个主线程负责向UI组件分发事件(包括绘制事件),也是在这个主线程里,你的应用和Android的 ...
- SWT的UI线程和非UI线程
为什么80%的码农都做不了架构师?>>> 要理解UI线程,先要了解一下"消息循环"这个概念.链接是百度百科上的条目,简单地说,操作系统把用户界面上的每个操作 ...
- Android开发之UI线程和非UI线程
这里又是老生畅谈的话了,前边已经有多篇文章针对线程进行探究解释,Android开发过程中线程的体现更是淋漓尽致.Android开发过程中涉及到的线程从大类上分可以归为两类:UI线程和非UI线程.本篇就 ...
- 守护线程与非守护线程的区别
守护线程与非守护线程 最近在看多线程的Timer章节,发现运用到了守护线程,感觉Java的基础知识还是需要补充. Java分为两种线程:用户线程和守护线程 所谓守护线程是指在程序运行的时候在后台提供一 ...
- Java中的守护线程和非守护线程(转载)
<什么是守护线程,什么是非守护线程> Java有两种Thread:"守护线程Daemon"(守护线程)与"用户线程User"(非守护线程). 用户线 ...
- 守护线程和非守护线程
直觉上来讲,守护线程和main相关 Java中有两种线程,一种是用户线程,另一种是守护线程. 用户线程是指用户自定义创建的线程,主线程停止,用户线程不会停止(另一条执行路径) 守护线程当进程不存在或主 ...
- 多线程基础-守护线程与非守护线程
守护线程与非守护线程 1.线程分类: 2.程序线程: 3.主线程与非守护线程 4.主线程与守护线程 5.主线程.守护线程.非守护线程 6. java虚拟机是如何退出的? 1.线程分类: 守护线程 非守 ...
- java守护线程与非守护线程
java守护线程与非守护线程 代码逻辑 当前网上结论 1.主线程结束,守护线程跟着结束 2.只要存在任何一个非守护线程,守护线程就全部工作 测试代码 第一段代码 第二段代码 结论 代码逻辑 代码里面包 ...
- 守护线程是什么?守护线程和非守护线程的区别是?守护线程的作用是?
守护线程是区别于用户线程,用户线程即我们手动创建的线程,而守护线程是程序运行的时候在后台提供一种通用服务的线程.垃圾回收线程就是典型的守护线程. 守护线程和非守护线程的区别是 public stati ...
- Android UI线程和非UI线程
UI线程及Android的单线程模型原则 当应用启动,系统会创建一个主线程(main thread). 这个主线程负责向UI组件分发事件(包括绘制事件),也是在这个主线程里,你的应用和Android的 ...
最新文章
- SAP S4HANA 账户组的配置里'Int.Std.Grping'选项没勾选导致ABAP程序报错
- PostgreSQL 10.1 手册_部分 III. 服务器管理_第 16 章 从源代码安装_16.5. 安装后设置...
- mysql游标遍历修改_mysql使用游标遍历数据进行批量针对性更新数据,急求mysql大神解答...
- RCE、exp、Exploit、Exploit Pack、exp-gui、Payload、MetaSploit都是啥
- 【安卓开发 】Android初级开发(六)Activity生命周期
- 大连市打造数字人民币应用示范村
- java指的是什么_java什么是实例意思指的是
- pythonm 用法-------list实现购物车
- linux 静态库、共享库
- IntelliJ IDEA快速自动生成Junit测试类
- 计算机简单进制转换题目,计算机数制转换题!(1011011)2 =( )10=( )16 =( )8(110111101)2 =( )10=(...
- 两个向量的夹角公式_两向量夹角(求两个向量的夹角公式)
- swagger的详细注解
- Tbase 源码 (六)
- 心理学与生活 - 文化与社会
- 维基百科著名程序员列表大全
- 网关系统就该这么设计(万能通用),贼稳!
- 【风变编程】第五课笔记
- natapp 配置微信小程序开发需要的网络环境
- 视觉镜头上的闪回画面