由于刚刚接触android还不是完全了解其内部机制,但是其毕竟是使用java开发,所以对于语言格式还是基本没有太大的区别,多的只是一些配置文件等等。但是关于线程这方面,却有一些区别。大家都知道,android是linux上的操作系统,后期才被移植到手机上。每当程序启动,会启动一个进程表示程序本身,然后一个线程即主线程执行一定任务。在内存不足时,android会自动释放一些低级进程(对于进程等级,android本身有其自己的算法,普通情况从高到低为 前台进程>可见进程>服务进程>后台进程>空进程)。

对于android的线程,首先先了解其单线程模型。在android中,其启动的主线程负责UI界面的控制与处理如点击事件、画图操作等等,并且不允许其他线程使用或更改UI界面。总之:“在开发Android应用时必须遵守单线程模型的原则: Android UI操作并不是线程安全的并且这些操作必须在UI线程中执行”。如果幕后的线程来执行UI对象,Android就会发出错误讯息CalledFromWrongThreadException。这样如果以后遇到此问题就可以检查一下线程是否违反了原则。
但是当主线程想要借助其他线程处理UI或者绘制图像就出现了一定问题。为了解决类似的问题,Android设计了一个Message Queue(消息队列), 线程间可以通过该 Message Queue 并结合Handler和Looper组件进行信息交换。Message类:线程之间用来通信的对象。 Handler类:就是message的主要处理者可以在一个线程的run方法中调用handler对象的 postMessage或sendMessage方法来实现,Android程序内部维护着一个消息队列,会轮训处理这些,如果你是Win32程序员可以很好理解这些消息处理,不过相对于Android来说没有提供 PreTranslateMessage这些干涉内部的方法。 Looper类: 其实Android中每一个Thread都跟着一个Looper,Looper可以帮助Thread维护一个消息队列,并可以与一个handler绑定,来实现一个线程同步机制。 其实听起来 很复杂,但是实际在操作上其实很容易理解。由于我也是初学,没有深入理解。 所以这里也就简单说一下他们的使用方法。简单来说你想让那个线程执行代码,例如让主线程实现UI界面的操作,就获取主线程的looper。然后创建一个你自己的handle类绑定这个looper。代码如下:
               ......               Looper looper=Looper.myLooper();       final MyHandler myhandle = new MyHandler(looper);                .......class MyHandler extends Handler{public MyHandler(Looper looper){super(looper);}public void handleMessage(Message message){................}}
这样绑定好之后,当有其他线程调用handler的sendmessage方法的时候,就会告知handle类的中继承的handleMessage方法执行相应代码。类似一个生产者消费者模型。由于handle是在主线程中执行的handleMessage方法,所以就不存在上述 CalledFromWrongThreadException 错误了。
            new Thread(){public void run(){while(true){Message message=Message.obtain();myhandle.sendMessage(message);} }}}.start();
用其他线程通知当前线程执行代码,然后用message来传递信息。Android线程的使用就是如此简单。

更多相关文章

  1. 一款霸榜 GitHub 的开源 Linux 资源监视器!
  2. Android开发AsyncTask异步处理任务使用方法及注意事项
  3. Android(安卓)跨进程传输大图片
  4. android开发笔记(一)Android(安卓)studio 输入法
  5. Android(安卓)IOS WebRTC 音视频开发总结(十二)-- sufaceview
  6. Android(安卓)中 Service 学习,开篇
  7. [置顶] Android(安卓)进程常驻(2)----细数利用android系统机制的保
  8. Android之EventBus1.0 和EventBus3.0的使用详解
  9. Google Android如何分析和研究Log文件 ,如何看日志信息

随机推荐

  1. android布局参照示例_约束布局Android示
  2. Android(安卓)开发环境问题解决方案集
  3. Android(安卓)[error cannot connect to
  4. Ubuntu12.04 安装ADB调试环境
  5. (亲测可用!!)android studio 编译 'com.andro
  6. 实现简单的Android的播放视频功能
  7. Android中进行HTTP操作
  8. [转]Android(安卓)Audio简述
  9. 在Android中支持表情
  10. Ubuntu 下配置使用Android(安卓)adb