Androidプラットフォームでコードを書くとき、UIスレッドでしかできないUI操作に注意しなければならないことがよくあります.スレッド同時操作.しかし、AndroidシステムがUIスレッドと独自の非UIスレッドをどのように区別できるかを知りたい.UIスレッドには識別子がありますか?
3 に答える
この情報は Android フレームワークによって保持され、同じように調査できます。
ただし、アプリケーションを開発するときのベスト プラクティスは、フレームワークの内部作業やアプリケーションの適応を判断したり、リバース エンジニアリングしたりしないようにすることです。むしろ、要件を見て、それに到達する方法を見つける必要があります。
あなたの場合、GUI スレッドでコードを実行する必要があることは明らかです。そのために、スレッドを GUI スレッドにする必要はありません。次のいずれかの方法で実行できます。
Runnables を使用して、コードをメイン アクティビティに投稿します。
myActivity.post(new Runnable(){
@override public void run(){ // your code to be run on GUI thread }
)};
アクティビティにアクセスできない場合は、アプリのメイン ハンドラーを見つけて投稿できます。何かのようなもの;
ハンドラ appHandler = new Handler(context.getMainLooper()); appHandler.post(new Runnable(....
runOnUIThread() を使用できます
MainActivity から呼び出すすべてのプロセスは、UI スレッドで実行されます。UI スレッドで何かを実行したくない場合は、AsyncTask またはバックグラウンド スレッドで起動します。これにより、ユーザー インターフェイスがブロックされるのを防ぐことができるため、ユーザーは引き続きアプリを操作できます。