我的Activity实现了一个接口IProcess。
我有一个名为Scaler的类,里面有一个名为doProcess()的静态方法。
doProcess包含一个匿名线程,该线程调用一个处理方法,在运行时更新其进度。
当进程完成后,我想在My activity上调用接口方法,该方法实现IProcess以显示对话框,但是,我在对话框应该显示的位置出现异常,说:
04-06 08:43:54.048: ERROR/AndroidRuntime(6832): java.lang.RuntimeException:
Can't create handler inside thread that has not called Looper.prepare()
我做错了什么,在我的主要活动中显示对话框会有什么替代方法(如果这是错误的)?
答案 0 :(得分:1)
为了从另一个线程通知UI线程,您应该使用Handlers。
答案 1 :(得分:0)
如果这是“一次性”背景,您可以使用AsyncTask
doInBackground()
来publishProgress()
进行处理,然后拨打onProgressUpdate()
。然后系统从您可以操作UI元素的位置调用{{1}}。
您可以在此处找到示例:https://github.com/pilhuhn/ZwitscherA/blob/master/src/de/bsd/zwitscher/TweetListActivity.java#L328
PublishProgess就是例如在第391行和第403行调用,onProgressUpdate从第451行开始。