簡體   English   中英

按下android中的按鈕后如何啟動一個不同的活動?

[英]How to start a different activity with some delay after pressing a button in android?

我希望新的活動開始時按下按鈕會有一些延遲。 是否有可能這樣做,並且該程序是什么。

使用postDelayed()調用runnable啟動您的活動。 示例代碼可以是

    //will care for all posts
    Handler mHandler = new Handler();

    //the button's onclick method
    onClick(...)
    {
        mHandler.postDelayed(mLaunchTask,MYDELAYTIME);
    }

    //will launch the activity
    private Runnable mLaunchTask = new Runnable() {
        public void run() {
            Intent i = new Intent(getApplicationContext(),MYACTIVITY.CLASS);
            startActivity(i);
        }
     };

請注意,這使接口保持反應。 然后,您應該關注從按鈕中刪除onclick偵聽器。

您可以使用Handler postDelayed()方法調用Runnable。

這是一個例子(http://developer.android.com/resources/articles/timed-ui-updates.html):

private Handler mHandler = new Handler();

...

OnClickListener mStartListener = new OnClickListener() {
   public void onClick(View v) {
            mHandler.postDelayed(mUpdateTimeTask, 100);
   }
};

private Runnable mUpdateTimeTask = new Runnable() {
   public void run() {
       // do what you need to do here after the delay
   }
};

推薦給@mad,讓他們第一次做對。

使用此代碼

new Handler().postDelayed(new Runnable() {
        @Override
        public void run() {
            final Intent mainIntent = new Intent(CurrentActivity.this, SecondActivity.class);
            LaunchActivity.this.startActivity(mainIntent);
            LaunchActivity.this.finish();
        }
    }, 4000);

您可以使用該方法postDelayed(Runnable action, long delayMillis)View到添加Runnable到消息隊列的(近似)的延遲后運行。

有時候,無論何時你的應用程序進程被殺,你都需要這樣做。 在這種情況下,您無法在流程中使用處理runnable或消息。 在這種情況下,你可以使用AlarmManager。 希望這個例子可以幫助任何人:

Intent intent = new Intent();
...

PendingIntent pendingIntent = PendingIntent.getActivity(<your context>, 0, intent, PendingIntent.FLAG_ONE_SHOT);
AlarmManager mgr = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
mgr.set(AlarmManager.RTC, <your delay>, pendingIntent);
runOnUiThread(new Runnable() {
        @Override
        public void run() {
            new Handler().postDelayed(new Runnable(){
                @Override
                public void run() {
                    Intent intent = new Intent(getApplicationContext(), MainActivity.class);
                    startActivity(intent);
                }
            }, 4000);
        }
    });

試試這段代碼

new Timer().schedule(new TimerTask() {          
    @Override
    public void run() {

        // run AsyncTask here.    


    }
 }, 3000);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM