我认为这是一个初学者(我)的问题,那么对你们来说很容易回答。
我有这个方法:
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);
方法(已完成)时才执行?或者AsyncTask
与doInBackground()
和onPostExecute()
一起使用会更安全吗?
答案 0 :(得分:1)
始终在addProductToCart(value);
之后执行
但是,如果该函数启动Thread
或AsyncThread
或类似函数,则该函数将在该任务完成之前返回。
总结:如果没有addProductToCart
答案 1 :(得分:0)
这在很大程度上取决于您的方法addProductToCart(value)
是否启动了自己的另一个线程。如果确实如此,则无法保证线程将在系统认为合适的情况下开始和结束。如果没有,那么在该线程完成之前,您不会调用view.post(...)
。
根据您要完成的任务,需要注意的另一件事是view.post(...)
内的方法无法保证立即运行。此方法的作用是将Runnable
个对象放入消息队列中。这意味着,在消息队列中的其他元素首先执行之前,此runnable将不会执行。其次,消息队列可以随时运行,这意味着即使这是队列中的第一个Runnable
,它也会最终 ,但不一定立即开始。