Java 处理程序在主线程上发布Runnable时生成的排队工作循环器线程

Java 处理程序在主线程上发布Runnable时生成的排队工作循环器线程,java,android,multithreading,Java,Android,Multithreading,我试图理解Android中的线程。 这就是我的代码- private Handler mHandler = new Handler(); private Runnable mPeriodicUpdate = new Runnable() { @Override public void run() { android.os.Process.setThreadPriority(THREAD_MAX_PRIORITY); mHandler.

我试图理解Android中的线程。 这就是我的代码-

   private Handler mHandler = new Handler();
   private Runnable mPeriodicUpdate = new Runnable() {
    @Override
    public void run() {
        android.os.Process.setThreadPriority(THREAD_MAX_PRIORITY);

        mHandler.postDelayed(mPeriodicUpdate, 10*1000 - SystemClock.elapsedRealtime()%1000);
        mIsStarted = true;
        Toast.makeText(
                getApplicationContext(),
                "Lat: " + mLatitude + "\nLng: " + mLongitude,
                Toast.LENGTH_LONG
        ).show();
        Log.d(TAG, "run: Getting Location Information");
    }
};
当我调用
mHandler.post(mPeriodicUpdate)时弹出一个新线程(参见图)


我想知道这条线是关于什么的?如果我挂起这条线,祝酒词就会不断出现。当我挂起主线程时,祝酒会停止并记录消息。显然,这是在主线程上运行的,那么这个新线程是干什么的?

我在运行代码时没有看到这个线程据我所知,
handler.post(Runnable)
这将Runnable作为消息添加到消息队列中,并且Runnable将在主线程上执行。因此
handler.post
不会在
QueuedWorker.java#getHandler()
中创建新线程,它有
HandlerThread HandlerThread=new HandlerThread(“排队工作循环器”,Process.THREAD\u PRIORITY\u前台);handlerThread.start()所以线程可能是从这里创建的。文档上说:`*这是为了异步写入SharedReference编辑而创建的,这样我们就有了一种机制*来等待Activity.onPause和类似位置的写入操作,但我们将来可能会将此机制用于*其他事情。`您的代码中是否有SharedReference操作?@LiuWenbin_否。哦,是的,我正在使用SharedReference。但这在不同的课堂上使用。我再次尝试注释掉SharedReference操作,尽管它在其他类中。还是那根线冒出来了。但你给了我一点洞察力。我想补充一点,这段代码在服务中。我在运行代码时没有看到这个线程。据我所知,
handler.post(Runnable)
这将Runnable作为消息添加到消息队列中,并且Runnable将在主线程上执行。因此
handler.post
不会在
QueuedWorker.java#getHandler()
中创建新线程,它有
HandlerThread HandlerThread=new HandlerThread(“排队工作循环器”,Process.THREAD\u PRIORITY\u前台);handlerThread.start()所以线程可能是从这里创建的。文档上说:`*这是为了异步写入SharedReference编辑而创建的,这样我们就有了一种机制*来等待Activity.onPause和类似位置的写入操作,但我们将来可能会将此机制用于*其他事情。`您的代码中是否有SharedReference操作?@LiuWenbin_否。哦,是的,我正在使用SharedReference。但这在不同的课堂上使用。我再次尝试注释掉SharedReference操作,尽管它在其他类中。还是那根线冒出来了。但你给了我一点洞察力。我想补充一点,这段代码在一个服务中。