繁体   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