我已经尝试过mContext.getMainLooper()和Looper.getMainLooper()。两者都返回相同的结果,但是我想知道哪种方法正确?我还从Android开发人员链接this和this中阅读了以下内容: 对于Looper.getMainLooper(): Looper getMainLooper()返回应用程序的主循环程序, 驻留在应用程序的主线程中。 对于mContext.getMainLooper(): Looper getMainLooper()返回Looper的主线程 当前的过程。这是用于将调用调度到的线程 应用程序组件(活动,服务等)。根据定义, 此方法返回与调用相同的结果 Looper.getMainLooper()。 最佳答案 getMainLooper()作为一种方法,它将根据您的调用方式返回相同的结果,因此您可以认为两者是相同的,因为从上下文返回Looper时,从应用程序返回looper时将获得相同的结果。 ,然后更好地查看Looper类,看看它如何返回循环程序:private static Looper sMainLooper;public static Looper getMainLooper() { synchronized (Looper.class) { return sMainLooper; }}public static void prepareMainLooper() { prepare(false); synchronized (Looper.class) { if (sMainLooper != null) { throw new IllegalStateException( "The main Looper has already been prepared."); } sMainLooper = myLooper(); }}public static Looper myLooper() { return sThreadLocal.get();}当查看ThreadLocal.class中的get()方法时:public T get() { Thread t = Thread.currentThread(); ThreadLocalMap map = getMap(t); if (map != null) { ThreadLocalMap.Entry e = map.getEntry(this); if (e != null) return (T) e.value; } return setInitialValue();}和Thread.currentThread();根据Thread.class文档: 返回值: 当前正在执行的线程。这是在运行android的情况下保存上下文的线程。毕竟,我发现应该困扰您的是不是如何获取主弯针,而是处理弯针时应遵循的最佳实践,例如何时使用getMainLooper()和何时使用Looper.prepare(),: Looper.prepareMainLooper()在主UI线程中准备循环程序。安卓 应用程序通常不调用此功能。由于主线程有 它的弯针早在第一次活动,服务,提供者或 广播接收器已启动。 但是Looper.prepare()在当前线程中准备Looper。在这之后 调用函数后,线程可以调用Looper.loop()开始处理 与处理程序的消息。而且您还应该知道getMainLooper()和myLooper(),as described here之间的区别: getMainLooperReturns the application's main looper, which lives in the main thread of the application. myLooperReturn the Looper object associated with the current thread. Returns null if the calling thread is not associated with a Looper. 10-06 05:56