2017-01-22 8 views
1

私はmainActivityを持っていて、どこにでも参照があるとしましょう。act.runOnUIThreadが現在表示されているアクティビティでない場合は、これを実行しても問題ありませんか?

私は後でこのアプリケーションでアクティビティを切り替えるため、現在はどちらが「上に」あるのか、それがmainActivityであるかはわかりません。

別のアクティビティが表示されている場合はmainActivity.runOnUIThread()に電話するのは間違っていますか?将来的に間違いなく動作しますか?それとも、私はそれを現在の活動でのみ呼び出すべきですか?

は技術的には、1つのUIスレッドがとてもあります...あなたがシナリオを説明し

+0

よく試してみませんか? – greenapps

+0

ここの問題はどこにでも参照があることです。代わりにオブザーバパターンを実装してみてください。 – tynn

答えて

0

は、UIスレッドと通信する方法について本質的です。どこでもあなたのmainActivityの参照を維持することは非常に悪い習慣です。 UIスレッドの呼び出しが許可されていない状態になっている可能性があります。

でもUIスレッドでコードを実行できます。ここにアンドロイドデベロッパーガイドがCommunication with the UI Threadであり、要は本質的には

new Handler(Looper.getMainLooper()).post(yourRunnableOnUi); 
+0

ええ、私はちょうどこれらのrunnablesを掲示するための '静的な'方法を探しています。ハンドラでソリューションを使用する際の不利な点は何ですか? –

+0

@Spectre基本的に不都合はありません。それはアンドロイドの好きな方法です。ハンドラで 'postDelayed'を実行している場合は、より細かいコントロールが必要な場合があります。ハンドラへの参照を保持したい場合があります。ハンドラが必要ない場合は、 'Handler'で' removeMessagesAndCallbacks'を呼び出して、割り当てられたリソースを解放することができます。 –

関連する問題