Android - 处理程序 - 如何阻止意图?

时间:2017-03-04 17:42:14

标签: android android-intent android-handler

我想在按下后退按钮时停止处理延迟/意图。我认为,我搜索了一些线程,但我没有相同的Handler逻辑。如果是的话,我道歉。

以下是我正在使用的代码:

else {

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

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

                    }

                }, 10000);

3 个答案:

答案 0 :(得分:1)

您必须在某个地方保存对HandlerRunnable的引用,然后您可以使用removeCallbacks(Runnable)上的Handler方法取消待处理的请求

示例代码:

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);
    }

}

答案 1 :(得分:1)

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

直接调用

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?

答案 2 :(得分:0)

如果你想对后退的意图做一些事情。你可以覆盖onBackPressed()方法。