我对android很新,我想知道如何在Android中获取一个线程,直到它得到用户的响应。我尝试了以下案例:
直到2000年
一旦达到1000,对话框应该打开
计数器“应该”停止,直到用户在对话框中按“确定”。
用户按下OK后,计数器应从1000继续,直到达到2000.
我的代码实际发生的是,计数器在点击1000时开始,对话框打开但计数器继续直到2000,并且没有停止并等待1000。
为什么会这样?有任何想法吗?实例
CODE:
public void onClick(View arg0)
{
final Runnable r =
new Runnable()
{
public void run()
{
for (int i = 0 ; i < 2000 ; i++)
{
System.out.println(i);
if(i == 1000)
{
final AlertDialog.Builder alert = new AlertDialog.Builder(TmptestActivity.this);
final EditText input = new EditText(TmptestActivity.this);
alert.setView(input);
alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton)
{
String $input = input.getText().toString();
System.out.println($input);
notify();
}});
alert.show();
}
答案 0 :(得分:0)
我认为这是因为您的警报对话框在UI线程中运行,因此您的新线程会继续更新计数器,因为您的警报位于另一个线程中。你应该尝试使用锁(但我不是很熟悉它们)。也许this可以帮到你。
答案 1 :(得分:0)
onClick()在UI线程上执行,阻止它是不明智的(不要在家里这样做!)。如果您希望将UI对话框推迟一段时间,您应该这样做:
(或者您可以使用异步任务:http://developer.android.com/reference/android/os/AsyncTask.html)
对于启动和停止线程,您可以在某些共享对象上使用wait()/ notify()