Android,从另一个类的匿名线程调用接口方法

时间:2011-04-06 07:49:31

标签: android multithreading android-activity dialog

我的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()

我做错了什么,在我的主要活动中显示对话框会有什么替代方法(如果这是错误的)?

2 个答案:

答案 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行开始。

另请参阅documentation for AsyncTask