Activity与Thread之间的通讯

转载 2012年03月29日 13:55:08

http://weizhulin.blog.51cto.com/1556324/311521

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


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

private static final int GUINOTIFIER = 0x1234;
复制代码
然后定义一些例子 里面需要的属性

public Calendar mCalendar;
public int mMinutes;
public int mHour;
public Handler mHandler;
private Thread mClockThread;
复制代码
接着我们通过Handler来接收Thread所传递的信息

mHandler = new Handler() {
            public void handleMessage(Message msg) {
                switch (msg.what) {
                    case TestHandler.GUINOTIFIER://TestHandler是Activity的类名
                        //得到Handle的通知了 这个时候你可以做相应的操作,本例是使用TextView 来显示时间
                        mTextView .setText(mHour + " : " + mMinutes);
                        break;
                }
                super.handleMessage(msg);
            }
        };
复制代码
接下来我们自定义一个Thread

class LooperThread extends Thread {
        public void run() {
            super.run();
            try {
                do {//每间隔一秒取一次系统 时间
                    long time = System.currentTimeMillis();
                    final Calendar mCalendar = Calendar.getInstance();
                    mCalendar.setTimeInMillis(time);
                    mHour = mCalendar.get(Calendar.HOUR);
                    mMinutes = mCalendar.get(Calendar.MINUTE);
                    Thread.sleep(1000);
                    //取得系统时间后发送消息给Handler
                    Message m = new Message();
                    m.what = Ex04_14.GUINOTIFIER;
                    Ex04_14.this.mHandler.sendMessage(m);
                } while (!LooperThread.interrupted());//当系统发出终端命令时停止循环
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
复制代码
最后我们启动线程

mClockThread = new LooperThread();
mClockThread.start();
复制代码
利用上面的例子我们可以扩展更多的应用,比如使用Thread进行上传下载 操作,完成后通知主Activity等等


相关文章推荐

Activity与Thread之间的通讯

在Android中要让Activity与Thread进行通讯 其实很简单。 重点就在于android.os.Handler、java.lang.Thread以及android.os.Message这...

Activity与Thread之间的通讯

在Android中要让Activity与Thread进行通讯 其实很简单。 重点就在于android .os.Handler、java.lang.Thread以及android.os.Message...

Activity与Thread之间的通讯

在Android中要让Activity与Thread进行通讯 其实很简单。 重点就在于android .os.Handler、java.lang.Thread以及android.os.Message...

Android Application与thread、stack、task、activity之间的关系

假设我们有两个Android Application他们分别是testA和testB。testA中只用一个activity名称为m,testB中含有三个activity分别是a、b和c。 (1) A...

Bundle类实现两个Activity之间通讯

Bundle类是一个key-value对,“A mappingfrom String values to various Parcelable types.” 两个activity之间的通讯可...

Activity与Service之间的通讯机制

进程内与服务通信 进程内与服务通信实际上就是通过bindService的方式与服务绑定,获取到通信中介Binder实例,然后通过调用这个实例的方法,完成对服务的各种操作。 下面来看具体代码演示: ...

Android Fragment详解(五):Fragment与Activity之间的通讯

与activity通讯 尽管fragment的实现是独立于activity的,可以被用于多个activity,但是每个activity所包含的是同一个fragment的不同的实例。 Fra...

Android开发之Activity之间的通讯

放慢脚步,一步一个脚印。

安卓Fragment和Activity之间的数据通讯

Fragment是Android3.0之后才推出来的。可以用来做底部菜单,现在很多APP都有用到这个底部菜单。当然TabHost也可以用来做底部菜单,但是Fragment来做,动画效果这些可以做得更炫...

非常详细的测试unity与android之间的通讯操作(一直activity那块还是有问题,一直进不来android界面!)

非常详细的测试unity与android之间的通讯操作 转载自 http://www.narkii.com/club/thread-320335-1.html        这段时间...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)