android进程和线程使用总结
2015-11-23 13:49
489 查看
Android是基于Linux的,所以一个安卓的进程其实就一个Linux进程,一般而言一个应用app就是一个安卓进程,也就是一个jvm虚拟机。但是不是说一个应用就只能有一个进程,如果你注意观察就会发现在manifest文件中Activity、application、Receiver、provider、Service标签都有一项为process的,没错这个就是用来指定组件运行在特定的进程的。如果在application设置就是指定该app运行的默认进程,如果在其他的4大组件设置就是设置该组件运行的进程,这样就可以指定组件运行在不同的进程里面,即使应用所在的jvm销毁了组件还是处于运行状态。
那么线程和进程又是什么关系呢?其实进程是由一个一个的线程组成的,线程是cup处理的基本单元,如果一个进程中没有了线程那么这个进程也就不复存在了。android中可以使用两种方式创建线程一个是继承Thread另一个是实现Runable接口。那么这两种方式有什么区别呢?一般也就两点吧:
1、第一点就是继承是单一的,使用的时候可能有局限性。
2、第二点就是使用Runable可以实现资源的共享。
第一点相信大家都是知道的,就不多说了,那么如何实现资源的共享呢?请看下面代码:
Thread使用:
仔细观察可以发现在使用Thread的时候每次都创建了一个新的对象,所以count变量自然都是不同的,可是使用Runable的时候只创建了一个对象,这样自然是达到了资源的共享。
大家都知道安卓不允许在子线程中操作UI控件(android.view包和android.widget包),也不允许主线程中做耗时操作。当然有限制一定会有解决办法的,下面我们就来总结一下使用方法。
主线程操作耗时:
1、new 一个子线程去做,handler返回数据。
2、使用异步任务。
3、创建一个Service在Service中创建子线程操作,用广播返回数据。
子线程操作UI:
1、Activity.runOnUiThread();
2、View.post()或者View.postDelayed()
3、在子线程中发消息,主线程使用handler更新UI。
4、使用异步任务
ok,安卓中有关线程的操作算是做了一个简单德尔总结,当然限于本人的水平可能有不完整的地方或者有错误的地方, 欢迎留言指正!
那么线程和进程又是什么关系呢?其实进程是由一个一个的线程组成的,线程是cup处理的基本单元,如果一个进程中没有了线程那么这个进程也就不复存在了。android中可以使用两种方式创建线程一个是继承Thread另一个是实现Runable接口。那么这两种方式有什么区别呢?一般也就两点吧:
1、第一点就是继承是单一的,使用的时候可能有局限性。
2、第二点就是使用Runable可以实现资源的共享。
第一点相信大家都是知道的,就不多说了,那么如何实现资源的共享呢?请看下面代码:
Thread使用:
class MyThread extends Thread { int count = 0; @Override public void run() { super.run(); while (count < 10) { count++; } } } new MyThread().start(); new MyThread().start();Runable使用:
class MyThread implements Runnable { int count = 0; @Override public void run() { while (count < 10) { count++; } } } MyThread run = new MyThread(); new Thread(run).start(); new Thread(run).start();
仔细观察可以发现在使用Thread的时候每次都创建了一个新的对象,所以count变量自然都是不同的,可是使用Runable的时候只创建了一个对象,这样自然是达到了资源的共享。
大家都知道安卓不允许在子线程中操作UI控件(android.view包和android.widget包),也不允许主线程中做耗时操作。当然有限制一定会有解决办法的,下面我们就来总结一下使用方法。
主线程操作耗时:
1、new 一个子线程去做,handler返回数据。
2、使用异步任务。
3、创建一个Service在Service中创建子线程操作,用广播返回数据。
子线程操作UI:
1、Activity.runOnUiThread();
2、View.post()或者View.postDelayed()
3、在子线程中发消息,主线程使用handler更新UI。
4、使用异步任务
ok,安卓中有关线程的操作算是做了一个简单德尔总结,当然限于本人的水平可能有不完整的地方或者有错误的地方, 欢迎留言指正!
相关文章推荐
- Android Resource Types之Style简介
- Android智能指针
- android获取屏幕宽高与获取控件宽高 方法总结
- Android性能优化之使用线程池处理异步任务
- android5.0 物理键盘与软键盘同时使用修改
- android DatePicker、TimePicker
- Android组件之BroadcastReceiver详解
- Android - 文件读写操作 总结
- android --拍照,从相册获取图片,兼容高版本,兼容小米手机
- 从实战项目学习Android(二)Textview的一行显示、背景拉伸
- android -- 加载gif 防止oom
- Android Studio生成和引用aar
- Android编程实现自定义进度条颜色的方法
- 详解 Android Activity 生命周期
- android shape的使用
- 【Android】Gson-以类模板的方式解析复杂JSON
- Android Resource Types之String简介
- Android ViewGroup的理解与封装
- Android4.0平板开发之隐藏底部任务栏的方法
- android WebView与JS的交互