我是 Android 开发新手。我从事 Swing 和 SWT 工作已有好几年了。 Swing 和 SWT 都有在 UI 线程同步和异步执行代码的策略。典型的用法是在一个线程中执行一些耗时的工作,然后在 UI 线程异步中显示结果。
所以我的问题是,Android 中有类似的策略吗?这是我的代码。参数runnable是一些耗时的代码。此方法将在执行期间显示一个等待对话框,然后期望在完成后显示一个 Toast。但是Toast需要在UI线程中显示。那么如何做到这一点呢?
public static void showWaitingDialog(final Activity parent, final Runnable runnable, String msg) {
if (StringUtils.isEmpty(msg)) {
msg = "processing...";
}
final ProgressDialog waitingDialog = ProgressDialog.show(parent, "Please Wait...", msg, true);
// execute in a new thread instead of UI thread
ThreadPoolUtil.execute(new Runnable() {
public void run() {
try {
// some time-consume operation
runnable.run();
} catch (Exception e) {
e.printStackTrace();
} finally {
waitingDialog.dismiss();
}
// TODO: How to display a Toast message here? execute some code in UI Thread.
}
});
}
还有关于Android UI系统的介绍吗?比如它是否是线程安全的,线程如何协同工作等等。非常感谢!
有几种方法可以做到这一点,
AsyncTask 可以正确且轻松地使用 UI 线程。这个班
允许执行后台操作并在 UI 上发布结果
线程而无需操作线程和/或处理程序。Example for using AsyncTask
服务是一个应用程序组件,代表
应用程序希望执行长时间运行的操作而不
与用户交互或为其他人提供功能
要使用的应用程序。Example for Using Service.
IntentService 是处理异步服务的基类
按需请求(表示为意图)。客户发送请求
通过startService(Intent)调用;该服务根据需要启动,
使用工作线程依次处理每个 Intent,并自行停止
当它没有工作的时候。Example for using IntentService.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)