我正在调查由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();
不,它没有创建第二个主线程。发布到 AndroidEventLoop 的所有任务都在主线程上处理。例如,这使您能够在后台线程上处理数据后在 UI 中进行更改。
http://developer.android.com/reference/android/os/Looper.html#getMainLooper()https://blog.nikitaog.me/2014/10/11/android-looper-handler-handlerthread-i/