在Android中要让Activity与Thread进行通讯 其实很简单。
重点就在于android .os.Handler、java.lang.Thread以及android.os.Message这三个类的整合应用
我们在Thread中可以通过Message来通知Handler,Handler在这里扮演着联系Acitivity与Thread之间的角色。


首先在Acitivity中我们要定义 一个常量来作为判断标示

  1. private static final int GUINOTIFIER = 0x1234;
复制代码

然后定义一些例子 里面需要的属性

  1. public Calendar mCalendar;
  2. public int mMinutes;
  3. public int mHour;
  4. public Handler mHandler;
  5. private Thread mClockThread;
复制代码

接着我们通过Handler来接收Thread所传递的信息

  1. mHandler = new Handler() {
  2. public void handleMessage(Message msg) {
  3. switch (msg.what) {
  4. case TestHandler.GUINOTIFIER://TestHandler是Activity的类名
  5. //得到Handle的通知了 这个时候你可以做相应的操作,本例是使用TextView 来显示时间
  6. mTextView .setText(mHour + " : " + mMinutes);
  7. break;
  8. }
  9. super.handleMessage(msg);
  10. }
  11. };
复制代码

接下来我们自定义一个Thread

  1. class LooperThread extends Thread {
  2. public void run() {
  3. super.run();
  4. try {
  5. do {//每间隔一秒取一次系统 时间
  6. long time = System.currentTimeMillis();
  7. final Calendar mCalendar = Calendar.getInstance();
  8. mCalendar.setTimeInMillis(time);
  9. mHour = mCalendar.get(Calendar.HOUR);
  10. mMinutes = mCalendar.get(Calendar.MINUTE);
  11. Thread.sleep(1000);
  12. //取得系统时间后发送消息给Handler
  13. Message m = new Message();
  14. m.what = Ex04_14.GUINOTIFIER;
  15. Ex04_14.this.mHandler.sendMessage(m);
  16. } while (!LooperThread.interrupted());//当系统发出终端命令时停止循环
  17. } catch (InterruptedException e) {
  18. e.printStackTrace();
  19. }
  20. }
  21. }
复制代码

最后我们启动线程

  1. mClockThread = new LooperThread();
  2. mClockThread.start();
复制代码

利用上面的例子我们可以扩展更多的应用,比如使用Thread进行上传下载 操作,完成后通知主Activity等等

更多相关文章

  1. Android Studio xml android标签突然没有代码提示问题的解决
  2. Android填坑之旅(第十七篇)MIX2 适配看这一篇就够了,只需一行代码
  3. 如何使Android应用程序获取系统权限 来修改系统时间
  4. Android 代码实现查看SQLite数据库中的表
  5. android:如何在java代码中覆盖webview中的javascript事件
  6. android的代码性能优化
  7. 《第一行代码》扩展总结
  8. Android Studio 初步在代码中操作控件
  9. Android 的窗口管理系统 (View, Canvas, WindowManager)

随机推荐

  1. Android Ap 开发 设计模式第二篇:适配器模
  2. 小记Activity生命周期(onCreate)
  3. unity和Android之间互相调用
  4. Android Service---在清单中声明一个服务
  5. Unity3D导出为android程序invokation fai
  6. android编辑单个工程
  7. Android下USB框架
  8. android 如何在状态栏上增加一个icon
  9. Android NDK的基本使用,这一篇就够了
  10. Android中 AIDL 的简单实用例子