2017-02-21 4 views
0

AppCompatActivityではこれについていくつかのフィードバックを得たいだけでした。このRunnableはいつ実行されますか?これはUIスレッドに関してどのように機能するのですか?

super.onBackPressed();はメインuiスレッドに投稿されていますか?そして、私のRunnableもメインuiスレッドに投稿されていますか?私が知っているのはキューの権利です。これは正しいです?

@Override 
public void onBackPressed() { 
    super.onBackPressed(); 
     runOnUiThread(new Runnable() { 
      @Override 
      public void run() { 
      // some work 
      } 
     }); 
} 
+1

.. –

+0

それはだんUIスレッド自体からUIスレッド上Runnableを投稿ですスレッド、que perseではありません。 UI内のすべてにアクセスするには、そのようなUIで物事を実行する必要があります。しかし、前に言ったように、UIスレッドからonBackPressedが呼び出されているので、UIスレッド上に既にあります。 –

答えて

0

onBackPressed()は常にUI threadに呼び出されます。ここではrunOnUiThread()メソッドは不要です。あなたのコードは何

内部runOnUiThread()は、以下のアクションが

がonBackPressedのコードは、常にUIスレッド上で実行されます
public final void runOnUiThread(Runnable action) { 
    if (Thread.currentThread() != mUiThread) { 
     mHandler.post(action); 
    } else { 
     action.run(); 
    } 
} 
+0

私のQはあまり明確ではありませんが、私はFragmentと 'public void onBackPressed()' 'super.onBackPressed();の後に' R.id.frame'にある現在のFragmentを取得するには 'runOnUiThread'の中で' FragManager.findFragmentById(R.id.frame); 'を実行しなければなりません –

+0

'onBackPressed()'は 'UIスレッド'の 'Activity'でのみ呼び出されるので、' runOnUiThread() 'を使わずにコードを実行できます。 – arjun

関連する問題