Android - 处理程序 - 如何停止 Intent?

Android - Handler - How To Stop The Intent?

我想在按下后退按钮时停止处理 delay/intent。我搜索了一些线程,但我认为我没有相同的处理程序逻辑。如果是,我很抱歉。

这是我正在使用的代码:

else {

                new Handler().postDelayed(new Runnable() {
                    @Override
                    public void run() {

                        Intent intent = new Intent(MainActivity.this, PollWebView_Gilmore.class);
                        startActivity(intent);
                        finish();

                    }

                }, 10000);

你必须在某处保存对 Handler 和你的 Runnable 的引用,然后你可以使用 Handler 上的 removeCallbacks(Runnable) 方法来取消待处理的请求。

示例代码:

public class MainActivity extends AppCompatActivity {

    private Handler handler = new Handler();

    private Runnable runnable = new Runnable() {
        @Override
        public void run() {
            Intent intent = new Intent(MainActivity.this, MainActivity.class);
            startActivity(intent);
            finish();
        }
    };

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

        Button button = (Button) findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                handler.postDelayed(runnable, 5000);
            }
        });
    }

    @Override
    public void onBackPressed() {
        super.onBackPressed();
        handler.removeCallbacks(runnable);
    }

}

如果你想做一些有意向的事 pressed.You 可以覆盖 onBackPressed() 方法。

如果不需要延迟,为什么要使用处理程序?只需删除它!

直接调用这个

Intent intent = new Intent(MainActivity.this, PollWebView_Gilmore.class);
startActivity(intent);
finish();

当您按下后退按钮时!

你也可以通过阅读下面的帖子来了解一下。

Android: Proper Way to use onBackPressed() with Toast

How to run a Runnable thread in Android?