Android 为什么Looper类中的loop()会被多次调用
我有一段简单的代码,它启动了一个意图,但当我调试它时,它会通过各种类,经常让我想知道为什么每次调用这些类,以及它们在返回正常执行之前执行什么任务 然后,执行控制转移到视图类并调用Android 为什么Looper类中的loop()会被多次调用,android,debugging,android-handler,android-looper,Android,Debugging,Android Handler,Android Looper,我有一段简单的代码,它启动了一个意图,但当我调试它时,它会通过各种类,经常让我想知道为什么每次调用这些类,以及它们在返回正常执行之前执行什么任务 然后,执行控制转移到视图类并调用performClick() 然后,它转到处理程序类并调用dispatchMessage(Message msg) 最后,在返回到正常流之前,它多次调用Looper的loop()。 有人能帮我理解引擎盖下发生了什么,以及为什么这个循环()会被多次调用吗 loop()是活套类的一部分。在android应用程序的深处,当
performClick()
然后,它转到处理程序类并调用dispatchMessage(Message msg)
最后,在返回到正常流之前,它多次调用Looper的loop()
。
有人能帮我理解引擎盖下发生了什么,以及为什么这个循环()会被多次调用吗 loop()是活套
类的一部分。在android应用程序的深处,当您的进程初始化应用程序时,JVM首先寻找的是入口点,在所有Java应用程序中,入口点是主要方法。android main方法存在于名为ActivityThread
的类中(检查活动线程)
这门课的美妙之处在于它做了一些事情
ActivityThread
的main方法中的活套调用prepareMainLooper()
方法。这将当前线程初始化为应用程序的主循环器。i、 e这是主线程接收其mainthread指定的位置,它在运行时不同于所有其他线程李>
Looper.loop()
方法,该方法在ActivityThread
的主方法中调用,并且由于(;;){}的而运行无限循环(双分号表示无限循环)。除非外部调用quit()
,否则此循环将继续无限期运行。循环方法每次完成一条消息时都调用message.next()
,以检索新消息
简言之,如果没有这种无限循环方法,android将很难有一种异步处理传入消息的基本方法,这是android事件驱动特性的核心。循环急切地寻找要处理或传递给处理程序的新消息
如果你有兴趣的话,请检查一下潜水深度 loop()
是活套
类的一部分。在android应用程序的深处,当您的进程初始化应用程序时,JVM首先寻找的是入口点,在所有Java应用程序中,入口点是主要方法。android main方法存在于名为ActivityThread
的类中(检查活动线程)
这门课的美妙之处在于它做了一些事情
ActivityThread
的main方法中的活套调用prepareMainLooper()
方法。这将当前线程初始化为应用程序的主循环器。i、 e这是主线程接收其mainthread指定的位置,它在运行时不同于所有其他线程李>
Looper.loop()
方法,该方法在ActivityThread
的主方法中调用,并且由于(;;){}的而运行无限循环(双分号表示无限循环)。除非外部调用quit()
,否则此循环将继续无限期运行。循环方法每次完成一条消息时都调用message.next()
,以检索新消息
简言之,如果没有这种无限循环方法,android将很难有一种异步处理传入消息的基本方法,这是android事件驱动特性的核心。循环急切地寻找要处理或传递给处理程序的新消息
如果你有兴趣的话,请检查一下潜水深度 请参阅android/app/ActivityThread.java
源文件并非所有人都知道handler looper或多线程在android中的幕后工作原理以及与此相关的问题,除非它无效,否则在任何意义上都不应被否决,如果有人否决了你的评论请参见android/app/ActivityThread.java
源文件并非所有人都知道handler looper或多线程在android中的幕后工作原理以及相关问题。除非无效,否则在任何意义上都不应否决该评论。如果有人否决,请至少添加你的评论