1

Androidプラットフォームでコードを書くとき、UIスレッドでしかできないUI操作に注意しなければならないことがよくあります.スレッド同時操作.しかし、AndroidシステムがUIスレッドと独自の非UIスレッドをどのように区別できるかを知りたい.UIスレッドには識別子がありますか?

4

3 に答える 3

0

この情報は Android フレームワークによって保持され、同じように調査できます。

ただし、アプリケーションを開発するときのベスト プラクティスは、フレームワークの内部作業やアプリケーションの適応を判断したり、リバース エンジニアリングしたりしないようにすることです。むしろ、要件を見て、それに到達する方法を見つける必要があります。

あなたの場合、GUI スレッドでコードを実行する必要があることは明らかです。そのために、スレッドを GUI スレッドにする必要はありません。次のいずれかの方法で実行できます。

  1. Runnables を使用して、コードをメイン アクティビティに投稿します。

    myActivity.post(new Runnable(){

    @override
    public void run(){
        // your code to be run on GUI thread
    }
    

    )};

  2. アクティビティにアクセスできない場合は、アプリのメイン ハンドラーを見つけて投稿できます。何かのようなもの;

    ハンドラ appHandler = new Handler(context.getMainLooper()); appHandler.post(new Runnable(....

  3. runOnUIThread() を使用できます

http://developer.android.com/reference/android/app/Activity.html#runOnUiThread%28java.lang.Runnable%29

于 2013-04-12T05:09:55.893 に答える
0

MainActivity から呼び出すすべてのプロセスは、UI スレッドで実行されます。UI スレッドで何かを実行したくない場合は、AsyncTask またはバックグラウンド スレッドで起動します。これにより、ユーザー インターフェイスがブロックされるのを防ぐことができるため、ユーザーは引き続きアプリを操作できます。

于 2013-04-12T00:40:43.987 に答える