【发布时间】:2010-03-06 11:23:17
【问题描述】:
我正在开发一个 android 应用程序并尝试处理线程而不真正了解它们...(是的,我有点愚蠢,我知道) 我会尽量快速正确地解释它。
在我的活动的 onCreate 方法中,我正在调用 AlertDialog 以使用户选择从 Internet 加载数据或使用先前存储在数据库中的数据直接访问应用程序。
为此,在 onCreate 中,我调用我的方法来引发 AlertDialog,肯定按钮应该启动工作线程下载,否定按钮应该调用意图移动到下一个活动。到目前为止,我得到了这个:
- 通过不在任何地方调用
wait(),我的 AlertDialog 会出现,但线程仍会启动 - 通过在我的线程的第一行调用
wait(),我必须将它声明为静态,以便从我的AlertDialog 的侦听器访问它,并且能够notify()它或interrupt(),我收到错误:@ 987654325@.
worker = new Thread(new Runnable() {
public void run() {
try {
wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
[我的运行方法的其余部分]
private void miseAJourDesDonnes() {
confirmInscrip = new AlertDialog.Builder(this).setMessage(
"Voulez-vous mettre à jour l'intégralité des données de l'application? (Connexion internet requise").setPositiveButton("Mettre à jour",
okListener).setNegativeButton("Continuer sans", nonListener);
confirmInscrip.create();
confirmInscrip.show();
}
OnClickListener okListener = new OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
Toast.makeText(AccueilSplash.this, "Mise à jour en cours", Toast.LENGTH_SHORT).show();
worker.notify();
return;
}
};
OnClickListener nonListener = new OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
Toast.makeText(AccueilSplash.this, "Accès direct à l'application", Toast.LENGTH_SHORT).show();
worker.interrupt();
Intent entre = new Intent(AccueilSplash.this, Androt.class);
startActivity(entre);
}
};
worker 是我的 Thread 实例(bbackground 之一) 我只是愚蠢还是有我没有掌握的微妙之处? 感谢您的任何回答...
【问题讨论】:
-
发布更多代码。我想你的 AlertDialog 有问题。
-
好的,用我的提醒编辑帖子
-
你在哪里调用worker.start()?
标签: java android static multithreading visibility