android上的线程执行

时间:2013-01-15 15:15:10

标签: android multithreading

我认为这是一个初学者(我)的问题,那么对你们来说很容易回答。

我有这个方法:

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);方法(已完成)时才执行

?或者AsyncTaskdoInBackground()onPostExecute()一起使用会更安全吗?

2 个答案:

答案 0 :(得分:1)

始终在addProductToCart(value);之后执行 但是,如果该函数启动ThreadAsyncThread或类似函数,则该函数将在该任务完成之前返回。

总结:如果没有addProductToCart

的内容,任何人都无法回答

答案 1 :(得分:0)

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

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