我有一个变量,我已将其设置为3.每次单击按钮时,它会递减并执行所需的操作。当它达到0时,我希望动作应该在屏幕上显示一段时间,然后它会移动到新的活动。
但问题是当它达到0时,它暂时不能让用户看到执行了什么动作,它只是跳转到下一页...... 有没有办法做到这一点?
我使用的代码是:
if(ch==0)
{
try {
Thread.sleep(15*1000);
startActivity(new Intent("com.example.quizproject.Menu"));
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
使用此代码后,变量达到0,它不会完成上一个操作而是暂停,然后移动到下一个活动。
此问题的任何可能解决方案?
答案 0 :(得分:2)
您可以创建一个扩展Thread的类,例如MyThread
:
public class MyThread extends Thread {
SampleActivity sampleActivity;
public MyThread(SampleActivity sampleActivity){
this.sampleActivity = sampleActivity;
}
public void run() {
try {
sleep(15*1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
Intent i = new Intent(this.sampleActivity, Asleep.class);
sampleActivity.startActivity(i);
}
}
修改强>:
然后在你想要启动Activity时使用它,这里sampleActivity
是第一个Activity(第一个问题),Asleep
是15秒后出现的Activity(第二个问题)。例如,在按钮的单击监听器中sampleActivity
这样做:
MyThread mt = new MyThread(this);
mt.start();
答案 1 :(得分:0)
为什么要线程睡觉?您将查找主线程,并且用户不会转到Intent,因为线程(sleep)在Intent之前。
这就是原因。
这样:
while (ch <=0) {
Intent i = new Intent (this, menu.class);
startActivity(i);
}