执行操作后,如何延迟启动新操作?

时间:2012-08-05 13:04:14

标签: android

我有一个变量,我已将其设置为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,它不会完成上一个操作而是暂停,然后移动到下一个活动。

此问题的任何可能解决方案?

2 个答案:

答案 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);
}