2017-03-04 37 views
0

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

这是我的工作代码:

else { 

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

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

        } 

       }, 10000); 
+0

如果您不需要延迟只是删除处理程序,只保留意图 –

+0

代码是完美的,然后什么问题呢?请解释你的问题 –

+0

@AbhishekSingh - 我想取消用户按下后的延迟/意图。 –

回答

1

你必须保存到Handler和你Runnable地方都参照,然后你可以使用在HandlerremoveCallbacks(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); 
    } 

} 
+0

我该如何把“handler.removeCallbacks(runnable);”在onBackPressed()里面? –

+0

我已经给我的答案添加了一个示例。 – zsmb13

+0

谢谢。我已经有了一个“onBackPressed();”的函数我应该只加这个吗? –

0

如果你想要做背部pressed.You意图东西可以覆盖onBackPressed()方法。

+0

我该如何把“handler.removeCallbacks(runnable);”在onBackPressed()里面? –

+0

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

1

如果你不需要延迟你为什么使用Handler?只要删除它!

调用此直接

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?

+0

我该如何把“handler.removeCallbacks(runnable);”在onBackPressed()里面? –