android进程和线程使用总结

来源:互联网 发布:二次元 社区 论坛源码 编辑:程序博客网 时间:2024/06/06 17:44


Android是基于Linux的,所以一个安卓的进程其实就一个Linux进程,一般而言一个应用app就是一个安卓进程,也就是一个jvm虚拟机。但是不是说一个应用就只能有一个进程,如果你注意观察就会发现在manifest文件中Activity、application、Receiver、provider、Service标签都有一项为process的,没错这个就是用来指定组件运行在特定的进程的。如果在application设置就是指定该app运行的默认进程,如果在其他的4大组件设置就是设置该组件运行的进程,这样就可以指定组件运行在不同的进程里面,即使应用所在的jvm销毁了组件还是处于运行状态。

那么线程和进程又是什么关系呢?其实进程是由一个一个的线程组成的,线程是cup处理的基本单元,如果一个进程中没有了线程那么这个进程也就不复存在了。android中可以使用两种方式创建线程一个是继承Thread另一个是实现Runable接口。那么这两种方式有什么区别呢?一般也就两点吧:

1、第一点就是继承是单一的,使用的时候可能有局限性。

2、第二点就是使用Runable可以实现资源的共享。

第一点相信大家都是知道的,就不多说了,那么如何实现资源的共享呢?请看下面代码:

Thread使用:

class MyThread extends Thread {int count = 0;@Overridepublic void run() {super.run();while (count < 10) {count++;}}}new MyThread().start();new MyThread().start();
Runable使用:

class MyThread implements Runnable {int count = 0;@Overridepublic 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,安卓中有关线程的操作算是做了一个简单德尔总结,当然限于本人的水平可能有不完整的地方或者有错误的地方, 欢迎留言指正!

0 0
原创粉丝点击