an0*_*00b 4 android dialog thread-safety ui-thread runnable
我试图在onUtteranceCompleted()中从非UI线程创建一个对话框:
runOnUiThread(
new Thread(new Runnable() {
public void run() { MyDialog.Prompt(this); }
}).start());
Run Code Online (Sandbox Code Playgroud)
Prompt()是MyDialog类的一个简单的静态方法:
static public void Prompt(Activity activity) {
MyDialog myDialog = new MyDialog();
myDialog.showAlert("Alert", activity);
}
Run Code Online (Sandbox Code Playgroud)
问题是,我正在尝试做两件错误:
通过将对话框创建推迟到UI线程,我想要的只是"做对了",但似乎我遗漏了一些基本的东西.
我缺少什么,如何完成我想要实现的看似简单的任务?
Cri*_*ian 11
肯定是:
runOnUiThread(new Runnable() {
public void run() { MyDialog.Prompt(NameOfYourActivity.this); }
});
Run Code Online (Sandbox Code Playgroud)
它表示这不适用于参数(void),因为您尝试使用start方法(这是一个void方法)运行一个线程.runOnUiThread接收一个可运行的对象,你不必担心启动它,这是由操作系统为你完成的.
关于第二个错误,它发生是因为该范围this指的Runnable是您正在初始化的对象,而不是对活动的引用.所以,你必须明确告诉this你所指的是什么(在这种情况下YourActivityName.this).
| 归档时间: |
|
| 查看次数: |
12678 次 |
| 最近记录: |