0

我正在调查 Dropbox 发布的跨平台库。以下代码来自它。我有问题(1)它使处理程序与主循环器连接。我听说这种方式我们可以创建 ui 线程处理程序。但它是否与原始 ui 线程(活动 ui 线程)有任何关系,或者它真的创建了另一个单独的 ui 线程?

如果有 2 个 ui 线程,那么一个 ui 线程是否有可能访问另一个 ui 组件并修改其 ui?

public class AndroidEventLoop extends EventLoop
{
    Handler mHandler;

    public AndroidEventLoop()
    {
        mHandler = new Handler(Looper.getMainLooper());
    }

    public void post(final AsyncTask task)
    {
        mHandler.post(new Runnable()
        {
            @Override
            public void run()
            {
                task.execute();
            }
        });
    }
}
public abstract class EventLoop {
    public abstract void post(AsyncTask task);
}

它在活动中调用

@Override
protected void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);

    EventLoop mainThread = new AndroidEventLoop();
4

1 回答 1

0

不,它没有创建第二个主线程。发布到 AndroidEventLoop 的所有任务都在主线程上处理。例如,这使您能够在后台线程上处理数据后在 UI 中进行更改。

http://developer.android.com/reference/android/os/Looper.html#getMainLooper() https://blog.nikitaog.me/2014/10/11/android-looper-handler-handlerthread-i/

于 2016-02-18T13:18:36.480 回答