如下面的例子
public void read()
{
System.out.println("A");
showDialog();
System.out.println("B");
System.out.println("C");
}
public void showDialog()
{
这里是一个Dialog,有确认和取消的按钮。
}
我现在是做法的 在showDialog()内开线程,
Thread thread = new Thread(runnable);
thread.start();
在runnable我使用了
for (int i = 9; i >= 0; i--)
{
Thread.sleep(1000);
System.out.println("D");
}
发现
打印的结果是
A
D
B
C
D
D
D
D
..
..
我想要的结果是
A
D
D
D
..
..
B
C
谁能告诉我怎么做,本人新手中的新手,望大家指点!
11 个解决方案
#1
主线程暂停不了呀,主线程暂停了那还不报ANR错误呀
#2
假如说
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
editText1.setText("AAAAAAAAAAAAAAA");
editText2.setText("BBBBBBBBBBBBBBB");
button1.setOnClickListener(onClickListener);
button2.setOnClickListener(onClickListener);
editText3.setText("CCCCCCCCCCCCCCC");
System.out.println("----------------END---------------");
}
我怎么样才能先等button处理完事件后再去执行editText3.setText("CCCCCCCCCCCCCCC");
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
editText1.setText("AAAAAAAAAAAAAAA");
editText2.setText("BBBBBBBBBBBBBBB");
button1.setOnClickListener(onClickListener);
button2.setOnClickListener(onClickListener);
editText3.setText("CCCCCCCCCCCCCCC");
System.out.println("----------------END---------------");
}
我怎么样才能先等button处理完事件后再去执行editText3.setText("CCCCCCCCCCCCCCC");
#3
用object.wait(10000)
#4
假如说
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
editText1.setText("AAAAAAAAAAAAAAA");
editText2.setText("BBBBBBBBBBBBBBB");
button1.setOnClickListener(onClickListener);
button2.setOnClickListener(onClickListener);
editText3.setText("CCCCCCCCCCCCCCC");
System.out.println("----------------END---------------");
}
我怎么样才能先等button处理完事件后再去执行editText3.setText("CCCCCCCCCCCCCCC");
这个也可以用handler来处理,在handler的handleMessage中editText3.setText("CCCCCCCCCCCCCCC");
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
editText1.setText("AAAAAAAAAAAAAAA");
editText2.setText("BBBBBBBBBBBBBBB");
button1.setOnClickListener(onClickListener);
button2.setOnClickListener(onClickListener);
editText3.setText("CCCCCCCCCCCCCCC");
System.out.println("----------------END---------------");
}
我怎么样才能先等button处理完事件后再去执行editText3.setText("CCCCCCCCCCCCCCC");
这个也可以用handler来处理,在handler的handleMessage中editText3.setText("CCCCCCCCCCCCCCC");
#5
那就在click中添加处理时间吗,主线程不能停
#6
在click中添加事件也满足不了我的需求。
我是在BroadcastReceiver中想处理一些事件
BroadcastReceive中的onReceive就是没有相关处理,就是默认的处理了
而我想先让用户先选择,然后再处理
我在onReceive先弹出对话框,然后再接着往下走。
3楼的大侠说wait,这个确实是做到了,但是不显示UI了,就是用户看不到界面,无法选择。
还有什么好的办法吗?
我是在BroadcastReceiver中想处理一些事件
BroadcastReceive中的onReceive就是没有相关处理,就是默认的处理了
而我想先让用户先选择,然后再处理
我在onReceive先弹出对话框,然后再接着往下走。
3楼的大侠说wait,这个确实是做到了,但是不显示UI了,就是用户看不到界面,无法选择。
还有什么好的办法吗?
#7
BroadcastReceive起个Activity, 然后show dialog, 并且创建个handler,post个消息10秒钟后finish。在dialog的button里你可以关闭这个Activity,取消那个给handler的消息。。。等等,爱干嘛干嘛。
这里没有线程什么事,别瞎用。
这里没有线程什么事,别瞎用。
#8
能稍微详细点吗?
是用
Handler mHandler=new Handler();
mHandler.post(new Runnable(){
@Override
public void run() {
// TODO Auto-generated method stub
}
});
这个吗?
#9
每个线程是单独运行的。
#10
public final boolean postDelayed(Runnable r, long delayMillis)
{
return sendMessageDelayed(getPostMessage(r), delayMillis);
}
Handler.java: postDelayed或者sendMessageDelayed都可以,看你自己。你也可以查找sendMessageDelayed别的地方的用法,以作参考: 比如ViewFlipper.java里有。
{
return sendMessageDelayed(getPostMessage(r), delayMillis);
}
Handler.java: postDelayed或者sendMessageDelayed都可以,看你自己。你也可以查找sendMessageDelayed别的地方的用法,以作参考: 比如ViewFlipper.java里有。
#11
请问楼主,问题解决了吗?
#1
主线程暂停不了呀,主线程暂停了那还不报ANR错误呀
#2
假如说
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
editText1.setText("AAAAAAAAAAAAAAA");
editText2.setText("BBBBBBBBBBBBBBB");
button1.setOnClickListener(onClickListener);
button2.setOnClickListener(onClickListener);
editText3.setText("CCCCCCCCCCCCCCC");
System.out.println("----------------END---------------");
}
我怎么样才能先等button处理完事件后再去执行editText3.setText("CCCCCCCCCCCCCCC");
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
editText1.setText("AAAAAAAAAAAAAAA");
editText2.setText("BBBBBBBBBBBBBBB");
button1.setOnClickListener(onClickListener);
button2.setOnClickListener(onClickListener);
editText3.setText("CCCCCCCCCCCCCCC");
System.out.println("----------------END---------------");
}
我怎么样才能先等button处理完事件后再去执行editText3.setText("CCCCCCCCCCCCCCC");
#3
用object.wait(10000)
#4
假如说
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
editText1.setText("AAAAAAAAAAAAAAA");
editText2.setText("BBBBBBBBBBBBBBB");
button1.setOnClickListener(onClickListener);
button2.setOnClickListener(onClickListener);
editText3.setText("CCCCCCCCCCCCCCC");
System.out.println("----------------END---------------");
}
我怎么样才能先等button处理完事件后再去执行editText3.setText("CCCCCCCCCCCCCCC");
这个也可以用handler来处理,在handler的handleMessage中editText3.setText("CCCCCCCCCCCCCCC");
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
editText1.setText("AAAAAAAAAAAAAAA");
editText2.setText("BBBBBBBBBBBBBBB");
button1.setOnClickListener(onClickListener);
button2.setOnClickListener(onClickListener);
editText3.setText("CCCCCCCCCCCCCCC");
System.out.println("----------------END---------------");
}
我怎么样才能先等button处理完事件后再去执行editText3.setText("CCCCCCCCCCCCCCC");
这个也可以用handler来处理,在handler的handleMessage中editText3.setText("CCCCCCCCCCCCCCC");
#5
那就在click中添加处理时间吗,主线程不能停
#6
在click中添加事件也满足不了我的需求。
我是在BroadcastReceiver中想处理一些事件
BroadcastReceive中的onReceive就是没有相关处理,就是默认的处理了
而我想先让用户先选择,然后再处理
我在onReceive先弹出对话框,然后再接着往下走。
3楼的大侠说wait,这个确实是做到了,但是不显示UI了,就是用户看不到界面,无法选择。
还有什么好的办法吗?
我是在BroadcastReceiver中想处理一些事件
BroadcastReceive中的onReceive就是没有相关处理,就是默认的处理了
而我想先让用户先选择,然后再处理
我在onReceive先弹出对话框,然后再接着往下走。
3楼的大侠说wait,这个确实是做到了,但是不显示UI了,就是用户看不到界面,无法选择。
还有什么好的办法吗?
#7
BroadcastReceive起个Activity, 然后show dialog, 并且创建个handler,post个消息10秒钟后finish。在dialog的button里你可以关闭这个Activity,取消那个给handler的消息。。。等等,爱干嘛干嘛。
这里没有线程什么事,别瞎用。
这里没有线程什么事,别瞎用。
#8
能稍微详细点吗?
是用
Handler mHandler=new Handler();
mHandler.post(new Runnable(){
@Override
public void run() {
// TODO Auto-generated method stub
}
});
这个吗?
#9
每个线程是单独运行的。
#10
public final boolean postDelayed(Runnable r, long delayMillis)
{
return sendMessageDelayed(getPostMessage(r), delayMillis);
}
Handler.java: postDelayed或者sendMessageDelayed都可以,看你自己。你也可以查找sendMessageDelayed别的地方的用法,以作参考: 比如ViewFlipper.java里有。
{
return sendMessageDelayed(getPostMessage(r), delayMillis);
}
Handler.java: postDelayed或者sendMessageDelayed都可以,看你自己。你也可以查找sendMessageDelayed别的地方的用法,以作参考: 比如ViewFlipper.java里有。
#11
请问楼主,问题解决了吗?