0

これは初心者(私)の質問だと思います。そうすれば、皆さんは簡単に答えることができます。

私はこの方法を持っています:

public void onQuantityTextChange(final int value)
{       
    new Thread(new Runnable() {
        public void run() {
            addProductToCart(value);

            view.post(new Runnable() {
                public void run() {
                    updateTotals();
                }
            });

        }
    }).start();
}

私の質問は:このコードの平和:

view.post(new Runnable() {
 public void run() {
  updateTotals();
}

このaddProductToCart(value);メソッドが実行(終了)されたときにのみ実行されますか?または、とでAsyncTasksを使用する方が安全ですか?doInBackground()onPostExecute()

4

2 に答える 2

1

それは常に後に実行されます:addProductToCart(value); しかし、その関数がThreadまたはAsyncThreadまたは同様のものを開始した場合、その関数はそのタスクが終了する前に戻ります。

要約すると、次の内容がなければ誰も答えることができませんaddProductToCart

于 2013-01-15T15:18:24.250 に答える
0

addProductToCart(value)これは、メソッドが独自の別のスレッドを開始するかどうかに大きく依存します。その場合、システムが適切であると判断したときにスレッドが開始および終了するため、保証はありません。そうでない場合は、view.post(...)そのスレッドが完了するまで電話をかけません。

達成しようとしていることに応じて注意すべきもう1つのことは、内部のメソッドview.post(...)がすぐに実行されるとは限らないことです。このメソッドが行うことは、Runnableオブジェクトをメッセージキュー内に配置することです。つまり、このランナブルは、メッセージキュー内の他の要素が最初に実行されるまで実行されません。次に、メッセージキューはいつでも実行できます。つまり、これがキューの最初である場合でも、最終的Runnableに開始されますが、必ずしもすぐに開始されるとは限りません。

于 2013-01-15T15:23:46.610 に答える