【发布时间】:2012-10-25 03:27:29
【问题描述】:
我的代码是:
public class EventDialog2 extends Dialog implements OnTouchListener{
TextView textv;
Context con;
Thread t;
int flag=0;
public EventDialog2(Context context, int dialogslideanim) {
super(context, dialogslideanim);
con = context;
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.dialog2);
getWindow().setGravity(Gravity.BOTTOM);
timing();
LinearLayout line = (LinearLayout) findViewById(R.id.linear2);
line.setOnTouchListener(this);
line.removeAllViews();
for (int i = 0; i < 15; i++) {
TextView tv = new TextView(con);
tv.setText("TestProcess " + i);
tv.setTextColor(Color.BLACK);
line.addView(tv);
}
}
private void timing() {
// TODO Auto-generated method stub
if(flag==1){
t.stop();
flag=0;
}
t = new Thread(new Runnable() {
public void run() {
try {
t.sleep(3000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
dismiss();
}
});
t.start();
}
public boolean onTouch(View v, MotionEvent event) {
System.out.println("touched");
flag=1;
timing();
return false;
}
}
这里的线程运行良好,因为它会在 3 秒后休眠。但是我需要当我们在对话框中触摸时线程应该得到 reset 并且应该在触摸后 3 秒后休眠。请帮我。 谢谢
【问题讨论】:
-
我不明白。除了让它进入睡眠状态之外,您似乎没有在线程上做任何事情。你想在 3 秒后发生什么?
-
3 秒后,对话框将关闭。但是我需要如果我们触摸对话框,它应该在触摸被释放后仅在 3 秒后关闭。
-
现在是什么情况?有什么错误吗?还是触摸不起作用?我建议使用 log 而不是这个 System.out.println("touched");
-
没有错误。触摸也被检测到。我只想重置睡眠时间。
标签: android multithreading android-layout reset