0

ドロップボックスで公開されているクロスプラットフォーム ライブラリを調査しています。次のコードはそれからのものです。質問があります (1)メインルーパーに接続するハンドラを作成します。このような方法で UI スレッド ハンドラを作成できると聞いたことがあります。しかし、それは元のUIスレッド(アクティビティUIスレッド)と関係がありますか、それとも本当に別の分離されたUIスレッドを作成しますか?

2 つの ui スレッドがある場合、1 つの 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);
}

そしてそれはActivityで呼び出されました

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

    EventLoop mainThread = new AndroidEventLoop();
4

1 に答える 1

0

いいえ、2 番目のメイン スレッドを作成しているわけではありません。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 に答える