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()and一起使用更安全onPostExecute()

4

2 回答 2

1

它总是在以下之后执行:addProductToCart(value); 但是如果该函数启动一个ThreadAsyncThread类似的函数,那么该函数将在该任务完成之前返回。

总结一下:没有内容,谁也回答不了addProductToCart

于 2013-01-15T15:18:24.250 回答
0

这在很大程度上取决于您的方法是否addProductToCart(value)启动了它自己的另一个线程。如果是这样,则无法保证线程将按照系统认为合适的方式开始和结束。view.post(...)如果没有,那么在该线程完成之前您不会调用。

根据您要完成的工作,需要注意的另一件事是内部view.post(...)方法不能保证立即运行。该方法所做的是将Runnable对象放入消息队列中。这意味着,在消息队列中的其他元素首先执行之前,此可运行对象不会执行。其次,消息队列可以随时运行,这意味着即使这是队列中的第一个,它最终Runnable也会启动,但不一定立即启动。

于 2013-01-15T15:23:46.610 回答