一起Talk Android吧(第一百七十八回:Android的中Handler机制七)

各位看官们大家好,上一回中咱们说的是Android中Handler机制的例子,这一回咱们继续说该例子。闲话休提,言归正转。让我们一起Talk Android吧!

看官们,我们在上一章回中介绍了如何使用Handler机制,其实在此之前,我们就介绍过,而且还有详细的代码示例,那么我们介绍的内容是不是重复了?重复是有的,不过开始介绍的内容和示例是把大家引入到Handler机制中,后面再介绍时是在分析源代码的基础上介绍的,这时加入了Looper相关的内容,这点在开始的内容中是没有。这是一种循序渐进的方式因此,后面的内容更加全面一些。

有看官问,开始的时候没有创建Looper,怎么进行消息循环呢?问的好,其实是Activity所在的线程帮我们创建了Looper。我们可以查看相关的源代码,它位于ActivityThread.java文件中,下面是它的源代码,我们只列出了核心功能的代码。

public static void main(String[] args) {
    Looper.prepareMainLooper();

    ActivityThread thread = new ActivityThread();
    thread.attach(false, startSeq);

    if (sMainThreadHandler == null) {
        sMainThreadHandler = thread.getHandler();
    }
    Looper.loop();
}

class H extends Handler {
   public void handleMessage(Message msg) {
       switch (msg.what) {
           case BIND_APPLICATION:
               AppBindData data = (AppBindData)msg.obj;
               handleBindApplication(data);
               break;
           case EXIT_APPLICATION:
               if (mInitialApplication != null) {
                   mInitialApplication.onTerminate();
               }
               Looper.myLooper().quit();
               break;
       }
   }
}

从上面的源代码可以看出,它和我们在上一章回中列出的步骤是相同的。看官们,这个源代码既可以看作是一个实际使用的例子,也帮我们说明了Activity所在线程如何创建Looper的过程,真是一箭双雕呀。不过有些看官还是觉得没有自己动手的感觉好,看官们不用着急,在接下来的章回中,我们会给你们自己动手的机会的。

各位看官,关于Android中Handler机制的例子咱们就介绍到这里,欲知后面还有什么例子,且听下回分解!

发布了537 篇原创文章 · 获赞 132 · 访问量 63万+

猜你喜欢

转载自blog.csdn.net/talk_8/article/details/105318320