0

全て:

私は、他のインスタンス変数とともに宣言およびインスタンス化されるハンドラーを持つコードを研究しています。

public class SomeActivity extends Activity {
    Handler handler = new Handler();  // What thread is this taking place on?
    // rest of class omitted
}

UIスレッドでインスタンス化されていますか?Runnable を ProgressBar に投稿するために使用されるため、そう願っています。私の理解では、ProgressBar は UI スレッドでのみ操作する必要があります。

Android のドキュメントによると、 onCreate() で作成されたものは次のとおりです。

アプリケーションのアクティビティは、アプリケーションの UI スレッドで実行されます。アクティビティの onCreate() メソッドなどで UI がインスタンス化されると、UI とのすべての対話は UI スレッドで実行される必要があります。」

しかし、これは onCreate() の前に起こっています。

情報をありがとう、

マイケル

4

2 に答える 2

0

UIスレッドでインスタンス化されていますか?

はい。ハンドラは、それが作成されたスレッドに存在します。メイン/UIスレッドで作成しているため、UI要素にアクセスできます。

しかし、これは onCreate() の前に起こっています。

これは、ハンドラーが実行されるスレッドには影響しません。

于 2012-12-21T18:47:14.543 に答える
0

特にバックグラウンド スレッドで実行しない限り、すべてがメイン スレッド (別名 UI スレッド) で行われます。そうです、あなたの Handler は UI スレッドで作成されます。

于 2012-12-21T18:48:31.057 に答える