- 浏览: 1846146 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (665)
- 闲话 (17)
- ruby (1)
- javascript (40)
- linux (7)
- android (22)
- 开发过程 (11)
- 哥也读读源代码 (13)
- JVM (1)
- ant (2)
- Hibernate (3)
- jboss (3)
- web service (17)
- https (4)
- java基础 (17)
- spring (7)
- servlet (3)
- 杂记 (39)
- struts2 (10)
- logback (4)
- 多线程 (2)
- 系统诊断 (9)
- UI (4)
- json (2)
- Java EE (7)
- eclipse相关 (4)
- JMS (1)
- maven (19)
- 版本管理 (7)
- sso (1)
- ci (1)
- 设计 (18)
- 戒烟 (4)
- http (9)
- 计划 (4)
- HTML5 (3)
- chrome extensions (5)
- tomcat源码阅读 (4)
- httpd (5)
- MongoDB (3)
- node (2)
最新评论
-
levin_china:
勾选了,还是找不到
用spring annotation声明的bean,当打包在jar中时,无法被扫描到 -
GGGGeek:
我用的maven-3.5.0,还没有遇到这种情况,使用jar ...
用spring annotation声明的bean,当打包在jar中时,无法被扫描到 -
GGGGeek:
受益匪浅,从组织项目结构,到技术细节,讲的很到位,只是博主不再 ...
一个多maven项目聚合的实例 -
Aaron-Joe-William:
<?xml version="1.0" ...
hibernate逆向工程 -
li272355201:
http://archive.apache.org/dist/ ...
tomcat源码阅读(一)——环境搭建
前三周android预研中,把可能用到的技术点都识别了,并完成了一个DEMO。之后一直在等UCD的同事把应用界面设计出来。。等待过程中有点无聊,就把android in action看完了,UCD的设计结果还是没出来,于是继续看google的android文档。刚才看到process and thread这节,总结整理一下
通过在manifest中配置,是可以改变android系统的默认行为的,不过好像没想到有什么场景需要这样做,所以这篇博客只总结默认配置下的情况
1. 一个application对应一个process
2. 所有的component(包括activity,service)都跑在同一个thread中,这个thread是main线程,也叫UI thread。也就是如果应用不做额外的编码,所有的组件都跑在同一个线程中。。
3. android还是比较好心的,it tries to maintain an application process for as long as possible
4. 但在资源不够的情况下,android系统就开始kill process了。优先级包括,foreground process、visible process、service process、background process、empty process。从后往前依次kill
5. 进程之间有依赖关系的话,process that is serving another process can never be ranked lower than the process it is serving
6. 由于前面2提到的,默认所有组件都跑在UI thread里,页面UI响应会很不好,所以要编码解决这个问题。需要遵循2条规则:
A. 不能阻塞UI thread
B. 不要在UI thread之外访问UI组件
上面的代码就违反了规则2,在worker thread中访问了UI组件mImageView
上面的代码就比较好了,但是可以用AsyncTask来进一步优化
通过在manifest中配置,是可以改变android系统的默认行为的,不过好像没想到有什么场景需要这样做,所以这篇博客只总结默认配置下的情况
1. 一个application对应一个process
2. 所有的component(包括activity,service)都跑在同一个thread中,这个thread是main线程,也叫UI thread。也就是如果应用不做额外的编码,所有的组件都跑在同一个线程中。。
3. android还是比较好心的,it tries to maintain an application process for as long as possible
4. 但在资源不够的情况下,android系统就开始kill process了。优先级包括,foreground process、visible process、service process、background process、empty process。从后往前依次kill
5. 进程之间有依赖关系的话,process that is serving another process can never be ranked lower than the process it is serving
6. 由于前面2提到的,默认所有组件都跑在UI thread里,页面UI响应会很不好,所以要编码解决这个问题。需要遵循2条规则:
A. 不能阻塞UI thread
B. 不要在UI thread之外访问UI组件
public void onClick(View v) { new Thread(new Runnable() { public void run() { Bitmap b = loadImageFromNetwork("http://example.com/image.png"); mImageView.setImageBitmap(b); } }).start(); }
上面的代码就违反了规则2,在worker thread中访问了UI组件mImageView
public void onClick(View v) { new Thread(new Runnable() { public void run() { final Bitmap bitmap = loadImageFromNetwork("http://example.com/image.png"); mImageView.post(new Runnable() { public void run() { mImageView.setImageBitmap(bitmap); } }); } }).start(); }
上面的代码就比较好了,但是可以用AsyncTask来进一步优化
public void onClick(View v) { new DownloadImageTask().execute("http://example.com/image.png"); } private class DownloadImageTask extends AsyncTask<String, Void, Bitmap> { protected Bitmap doInBackground(String... urls) { return loadImageFromNetwork(urls[0]); } protected void onPostExecute(Bitmap result) { mImageView.setImageBitmap(result); } }
评论
1 楼
kyfxbl
2011-07-18
关于process的rank,分别说明如下。
Foreground Process,前台进程,指的是满足以下任一条件的进程:
1. 持有onResume()调用后的activity,也就是正在与用户进行交互的activity
2. 持有绑定到前台activity的service
3. 持有run in foreground的service
4. 持有正在执行onCreate()、onStart()、onDestroy()的service
5. 持有正在执行onReceive()的BroadcastReceiver
Visible Process,可视进程,指的是满足以下任一条件的进程:
1. 持有onPause()调用后的activity,也就是该activity仍然是可见的,但是不是focus
2. 持有绑定到visible activity的service
Servive Process,服务进程,持有用startService()启动的service的进程
Background Process,后台进程,持有已经调用了onStop()方法的activity的进程
Empty Process,空进程。这种进程中的所有组件都已经释放,已经不再持有任何组件
Foreground Process,前台进程,指的是满足以下任一条件的进程:
1. 持有onResume()调用后的activity,也就是正在与用户进行交互的activity
2. 持有绑定到前台activity的service
3. 持有run in foreground的service
4. 持有正在执行onCreate()、onStart()、onDestroy()的service
5. 持有正在执行onReceive()的BroadcastReceiver
Visible Process,可视进程,指的是满足以下任一条件的进程:
1. 持有onPause()调用后的activity,也就是该activity仍然是可见的,但是不是focus
2. 持有绑定到visible activity的service
Servive Process,服务进程,持有用startService()启动的service的进程
Background Process,后台进程,持有已经调用了onStop()方法的activity的进程
Empty Process,空进程。这种进程中的所有组件都已经释放,已经不再持有任何组件
发表评论
-
最近半个月开发小结
2011-12-05 22:16 13181、有一个方法,有一段 ... -
android培训文档提纲(四)
2011-11-27 23:28 12531、生命周期方法onSaveInstanceState()是在 ... -
Tasks and Back Stack
2011-11-22 23:47 1187Even though the activities may ... -
上周开发过程中几个简单问题的总结
2011-11-21 13:18 1368上周开发中组员遇到几个问题,都不是大问题,但都耽搁了一些时间。 ... -
android培训文档提纲(三)
2011-11-12 23:47 17711、Activity和Service组件是Context的子类 ... -
android的Log组件和logcat命令
2011-11-12 23:03 6331项目进入开发阶段了, ... -
android培训文档提纲(二)
2011-11-07 21:10 1670一、Each Activity can make an ... -
android培训文档提纲(一)
2011-10-23 14:05 1611最近项目快要进入开发 ... -
顶部有一排按钮,最底下还有FooterView的ListView页面
2011-08-13 15:46 3308先上效果图: 下面详细说说这个页面是怎么做出来的: 1、 ... -
实现屏幕下方展示的TAB分页
2011-08-09 23:22 2182这篇博客是参考helloandroid兄的腾讯微博应用,我整理 ... -
PendingIntent
2011-08-08 16:02 1564在开发SMS等应用时,有时调用相关的API会要求提供一个类型为 ... -
android数据持久化总结
2011-08-06 12:23 19241、 通过Context.getSharedPreferenc ... -
intent and service
2011-08-04 00:07 1426明天才开始讨论包需求 ... -
最近两周android总结
2011-08-01 23:42 1621最近2周预研做得差不多 ... -
没有单元测试,怎能写代码
2011-07-25 17:56 1575项目前期的技术点预研完成了,最近开始做原型开发。 之前没有在 ... -
android第三周小结
2011-07-18 10:16 13681. 系统自带的通讯录应用,联系人名单保存在data/data ... -
onPause()方法的特殊性
2011-07-15 17:11 2937onPause(), onStop(), onDestroy( ... -
activity存在的三种状态
2011-07-15 16:44 1782An activity can exist in essent ... -
android第二周小结
2011-07-14 10:50 11681. 做了短信侦听的Broadca ... -
android一周小结
2011-07-04 21:26 1239做了一周android预研,总结以下几条: 1. 用DDMS ...
相关推荐
Get familiar with the Android process model and low-level concurrent and multithread constructs available on the Android SDK Use AsyncTask to load data in the background, delivering progress results ...
Note that unlike other application components, calls on to the IBinder interface returned here may not happen on the main thread of the process. More information about this can be found in Application...
This unit also goes into detail on how to write the main thread and view for your app. Unit 3, Sprites and Objects, explains how to create sprites, major characters, monsters, and objects. You'll ...
本文较为深入的分析了android中UI主线程与子线程。分享给大家供大家参考。...一个Android 程序默认情况下也只有一个Process,但一个Process下却可以有许多个Thread。在这么多Thread当中,有一个Thread,我们称之为UI
- **进程(Process):** Android应用程序默认运行在其独立的Linux进程中。 - **线程(Thread):** Android应用程序可以在主线程之外创建额外的线程来执行耗时操作。 - **远程过程调用(Remote Procedure Calls):** 通过...
- **进程 - Process** 每个Android应用程序通常都会有自己的Linux进程。 - **线程 - Thread** 线程允许在应用程序内部并发执行多个任务。 - **远程过程调用 - Remote Procedure Call (RPC)** 允许应用程序调用另...
If you only need to persist simple values and your application runs in a single process SharedPreferences is probably enough for you. It is a good default option. There are some situations where ...
- **进程 (Process)**: 默认情况下,每个 Android 应用程序都在自己的 Linux 进程中运行。这意味着应用程序之间的代码通常是隔离的。 - **线程 (Thread)**: Android 应用程序通常在一个主线程上运行 UI 相关的操作。...
- **Developing Mobile Web Applications**: Overviewed as a process of designing and developing web apps that work seamlessly across different devices and platforms. - **Write once, read many**: ...
android.os.Process.killProcess(Process.myPid()); } } // 其他辅助方法如获取设备信息、保存异常信息到文件等 } ``` 在`init()`方法中,我们首先获取当前的默认异常处理器,并将其替换为我们自定义的`...
android.os.Process.killProcess(android.os.Process.myPid()); } // 其他辅助方法... } ``` 在上述代码中,`getVersionInfo()`用于获取应用的版本信息,`getMobileInfo()`用于收集设备的硬件信息,而`...
Java 官网对Looper对象的说明: public class Looperextends ObjectClass ... to create one, call prepare() in the thread that is to run the loop, and then loop() to have it process messages until the loop is
android.os.Process.killProcess(android.os.Process.myPid()); } // 省略保存异常信息到文件和发送崩溃报告的具体实现 } ``` 为了确保我们的异常处理器能够正常工作,我们需要在应用启动时初始化它,通常在`...
The report primarily focuses on the software testing process involved in the design and development of a classic Snake game for the Android platform. 首先,对于软件测试的理解,它是一种系统性的活动...
4)....Added "--el_injectjcl", "--el_createjcl", and "--el_createdbg" command-line options for ecc32/emake to inject JEDI/JCL debug info, create .jdbg file, and create .dbg file (Microsoft debug format...
ICS V9 is in early development and is planned to support Android. There are no current plans for ICS for iOS. Version Control repository: --------------------------- svn://svn.overbyte.be/ics or ...
4. **操作系统**:如Windows、Linux、macOS等,其相关的术语有进程(process)、线程(thread)、内存管理(memory management)、文件系统(file system)等。理解这些概念有助于进行系统级编程和调试。 5. **网络...
5. **进程和线程隔离(Process and Thread Isolation)**:应用沙箱可能需要创建独立的进程或线程来运行每个应用,这样即使某个应用崩溃,也不会影响其他应用或整个系统。 6. **API限制(API Restriction)**:通过白...
# frameworks/native/data/etc/android.hardware.touchscreen.multitouch.jazzhand.xml:system/etc/permissions/android.hardware.touchscreen.multitouch.jazzhand.xml \ # frameworks/native/data/etc/android....