0
方案是,我有一个使用回调来更新UI的下载数据线程(使用runOnUIThread方法),并且用户可以手动取消下载数据(在主线程上运行)。问题是,当下载数据线程正在完成下载数据时,与此同时,取消事件正在被用户触发,因此,数据将更新为先完成,然后更新为取消。如何在android上同步我的线程和UI线程
问题是,如何同步这些线程以更新UI?
在此先感谢。
方案是,我有一个使用回调来更新UI的下载数据线程(使用runOnUIThread方法),并且用户可以手动取消下载数据(在主线程上运行)。问题是,当下载数据线程正在完成下载数据时,与此同时,取消事件正在被用户触发,因此,数据将更新为先完成,然后更新为取消。如何在android上同步我的线程和UI线程
问题是,如何同步这些线程以更新UI?
在此先感谢。
另一个线程需要使用线程的中断()或isInterrupted()方法检查取消。下载适当的数据部分后,您需要有一种检查状态的方法。
看起来你想使用[AsycTask](http://developer.android.com/reference/android/os/AsyncTask.html)。它使您能够取消和更新UI线程。 – Benjamin
这听起来像你想UI线程更新一个标志,下载线程将读取,说下载被取消。下载线程会在进度更新回调之前检查该标志,如果已设置(即用户取消下载),请停止下载并将其他“已取消”消息发回UI? – ksasq
下载线程有两个回调方法:onProgressChanged()和onCompleted()。 updateUI()方法将在onCompleted()中被触发以更新UI元素,并且如果用户手动取消下载数据,updateUI()也会被触发。我锁定一个共享同步对象来调用updateUI(),但我不知道它会死锁,因为updateUI()mehtod使用activity.runOnUIThread()?谢谢你们。 – Simon