[英]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.