安卓进程线程那些事
来源:互联网 发布:37传奇霸业宝石数据 编辑:程序博客网 时间:2024/05/20 10:24
默认情况下,一个程序所有的组件都是运行在同一进程和线程当中的,我们把它叫做main thread,进程又可以包含许多线程,线程被称作为轻量级的线程
进程
安卓的应用程序是不可以控制自己的生命周期的,这份工作是交给安卓运行时来完成的,安卓运行时会根据进程所处的状态来控制程序,进程的重要度越低,则越是会被先杀死,而进程的状态则是靠里面运行的组件来指定的。
在哪里可以指定进程组件运行的进程
manifest文件当中,<activity>,<service>,<provider>,<receiver>
里,我们可以使用android:process属性指定它运行在那个线程,同样的<application>
结点我们也可以指定程序所有组建的运行的线程。
进程的分类
- 前台进程
- 可视进程
- 服务进程
- 后台进程
- 空进程
线程
安卓里的主线程有时称为UI线程,因为它主要负责屏幕界面的绘制以及与用户的交互,所以如果在UI线程里进行一些其他的繁重的任务的话,会造成线程的阻塞,超过5秒以上会出现ANR,ForceClose是因为空指针。我们需要下面两点
- 不要阻塞UI线程
- 不要再UI线程外尝试访问UI组件包(因为UI组件不是线程安全的)
使用AsyncTask
在使用AsyncTask之前我们可以用Handler+Message实现相同的原理,这里我们只介绍AsyncTask。
private class DownloadFilesTask extends AsyncTask<URL, Integer, Long> { protected Long doInBackground(URL... urls) { int count = urls.length; long totalSize = 0; for (int i = 0; i < count; i++) { totalSize += Downloader.downloadFile(urls[i]); publishProgress((int) ((i / (float) count) * 100)); // Escape early if cancel() is called if (isCancelled()) break; } return totalSize; } protected void onProgressUpdate(Integer... progress) { setProgressPercent(progress[0]); } protected void onPostExecute(Long result) { showDialog("Downloaded " + result + " bytes"); } }
0 0
- 安卓进程线程那些事
- 线程与进程那些事
- Java 进程与线程那些事
- 安卓的进程和线程
- 安卓理论之进程与线程
- 安卓的进程和线程
- 安卓:进程与线程(进程篇)
- 安卓:进程与线程(线程篇)
- 多线程的那些事(2)进程和线程调度算法
- 多线程的那些事(1)进程和线程是什么
- 安卓界面布局那些事
- 【安卓】zipalign 的那些事
- 关于安卓的那些事
- 安卓apk反编译的那些事
- 安卓-关于EditText的那些事......
- 安卓屏幕的那些事
- 安卓layout_weight的那些事
- 安卓的进程与线程及其相关代码实现
- 派生类到基类的转换 和基类到派生类的转换 http://blog.csdn.net/wyyzsl212328/article/details/8263959
- Flash As3.0 实现队列,先进先出
- angular 文件上传
- Accord.NET 安装配置
- 多线程下控制台输出乱序的问题
- 安卓进程线程那些事
- java死锁
- java web 项目中定时器的写法
- 关于tableView的重用池问题
- paramiko
- 【读Android源码,提升编码水平之一:图片缓存机制】
- h5案例分享 华谊电影《老炮儿》约战
- Android平台Camera实时滤镜实现方法探讨(九)--磨皮算法探讨(一)
- mysql主从复制