15

AsyncTask を使用するのは非常にやり過ぎだと感じることがあります。Android で SwingUtilities.invokeLater のような同様の機能を探しています。1 行のコードを実行したいだけなので、そのために新しいクラスを作成する必要はありません。

4

3 に答える 3

24

多分あなたは探している:

Activity.runOnUiThread(Runnable action)
于 2012-07-25T02:52:26.033 に答える
6
Activity.runOnUiThread(Runnable action);

上記のメソッドは、Java の invokeLater とは少し異なります。これは、既に ui スレッドにいるかどうかを確認し、Runnable をすぐに実行するためです。

UI スレッドを使用している場合でも、 Runnable がすぐに呼び出されるのではなく、後で呼び出されるようにする別の方法があります。これを行うには、メイン スレッドにいる間に次のコードを記述します。バックエンド スレッドでこれを呼び出すと、ランナブルがバックエンド スレッドで実行されます。

Handler h = new Handler();
h.post(new Runnable() {
    @Override
    public void run() {
        //your code..
    }
);
于 2016-01-14T22:54:40.820 に答える
1

何をするのか正確には覚えていませんinvokeLater()が、何かを遅らせて実行したい場合は、postDealayed()を使用できます。これは UI スレッドで行われるため、当然、長時間実行されるタスクには適していません。

于 2012-07-25T02:27:52.257 に答える