如何在一定时限后拨打另一项活动

时间:2011-03-30 11:32:00

标签: java android multithreading

如何为一个活动调用另一个活动提供时间限制。我想通过给定一些时间限制来调用另一个活动(Ex将A类调用到B类)。我使用了alarmManager,但我的应用程序也不可能使用线程,每当我给Thread.sleep它就不会执行动作直到睡眠结束。我不知道该怎么做这个过程。任何人都可以给出给时间限制的想法。

4 个答案:

答案 0 :(得分:18)

您可以使用Timer并添加在特定延迟后执行的TimerTask

这是一个或多或少完成的例子:

Timer timer = new Timer();
timer.schedule(new TimerTask() {

   public void run() {

      //here you can start your Activity B.

   }

}, 10000);

上面的例子在10秒内执行一个新的TimerTask。在TimerTask中,您可以覆盖run方法。在run方法中,您可以开始新活动。在延迟之后执行run方法。在这个例子中,它是10'000毫秒。

答案 1 :(得分:9)

这是一个简单的解决方案。例如,这可用于显示1秒的启动活动,然后进入主应用程序:

public class Splash extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.splash);

            int secondsDelayed = 1;
            new Handler().postDelayed(new Runnable() {
                    public void run() {
                            startActivity(new Intent(Splash.this, ActivityB.class));
                            finish();
                    }
            }, secondsDelayed * 1000);
    }
}

答案 2 :(得分:1)

这也可以使用android CountDownTimer类来完成。

请参阅此示例,延迟3秒。

new CountDownTimer(3000, 1000) {
    public void onFinish() {
         Intent startActivity = new Intent(ThisActivity.this,ActivityToStart.class);
         startActivity(startActivity);
        finish();
    }

    public void onTick(long millisUntilFinished) {
    }

}.start();

您可能还需要在AndroidManifest.xml文件

中定义父活动
<activity
      android:name=".ActivityToStart"
      android:label="Back"
      android:parentActivityName=".MainActivity" >

      <!-- Parent activity meta-data to support 4.0 and lower -->
      <meta-data
           android:name="android.support.PARENT_ACTIVITY"
           android:value=".MainActivity" />
</activity>

答案 3 :(得分:1)

让我们希望以下示例可能有所帮助。

此处,我在MainActivity.java

之后的特定时间(此示例中为2秒)之后致电MainPage.java

CODE:

public class MainPage extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main_page);
        Handler handler=new Handler();
        handler.postDelayed(new Runnable() {
            @Override
            public void run() {
                startActivity(new Intent(MainPage.this,MainActivity.class));
            }
        },2000L);
    }

}