簡體   English   中英

按下主頁按鈕后,我得到了活動開關 ANDROID

[英]After Home Button get pressed i got activities switch ANDROID

我的第一個活動在 3 秒后切換到第二個活動,這很好用。 問題是,如果我在這 3 秒內按下主頁按鈕,應用程序將在第二個活動中重新打開。 有沒有簡單的方法來解決這個問題? 提前致謝。

    public class StartActivity extends AppCompatActivity {

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_start);

            switchActivities();
        }

        @Override
        public void onBackPressed(){

        }


        public void switchActivities() {
            Handler handler = new Handler();
            handler.postDelayed(new Runnable() {

                @Override
                public void run() {
                    Intent intent = new Intent(getApplicationContext(), SecondActivity.class);
                    startActivity(intent);
                    finish();
                }

            }, 3000);
        }
}

編輯:

也許我不清楚,我不希望在按下主頁按鈕后重新打開應用程序。 我怎樣才能做到這一點?

這是因為您沒有清除延遲回調。 您可以通過以下方式修復它:

private Handler handler = new Handler();

public void switchActivities() {
     handler.postDelayed(new Runnable() {

          @Override
          public void run() {
               Intent intent = new Intent(getApplicationContext(), SecondActivity.class);
               startActivity(intent);
               finish();
          }

     }, 3000);
}

public void onStop() {
    super.onStop();
    handler.removeCallbacksAndMessages(null);        
}

當您在第二個活動打開之前離開第一個活動時,您只需取消您的處理程序。

public class StartActivity extends AppCompatActivity {

Runnable nextActivityRunnable;
Handler handler;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_start);

        switchActivities();
    }

    @Override
    public void onBackPressed(){

    }


    public void switchActivities() {

      nextActivityRunnable = new Runnable() {
           @Override
           public void run() {
            Intent intent = new Intent(getApplicationContext(), 
            SecondActivity.class);

            startActivity(intent);
            finish();
        }
      };

      handler = new Handler();
      handler.postDelayed(nextActivityRunnable, 3000);
    }

@Override
protected void onPause() {
    super.onPause();

    handler.removeCallbacks(nextActivityRunnable);
}

}

暫無
暫無

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

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