相关疑难解决方法(0)

如何从Handler中删除所有回调?

我有一个来自我的子活动的Handler,由主Activity调用.这个Handler被子类用于postDelay一些Runnables,我无法管理它们.现在,在这个onStop事件中,我需要在完成Activity之前删除它们(不知何故我调用了finish(),但它仍然一次又一次地调用).无论如何要从处理程序中删除所有回调?

java android callback android-handler

209
推荐指数
5
解决办法
10万
查看次数

removeCallbacks不会停止runnable

我从一个方法调用:

myHandler.postDelayed(mMyRunnableHide, 6000);
Run Code Online (Sandbox Code Playgroud)

哪个叫:

public Runnable mMyRunnableHide = new Runnable()
{

    public void run()
    {
        mTextDisplay.setText("");
        DisplayX();
    }
 };
Run Code Online (Sandbox Code Playgroud)

如果点击屏幕上的按钮,我想停止runnable:

   Button next = (Button) findViewById(R.id.Breaction);
    next.setOnClickListener(new View.OnClickListener() {
        public void onClick(View view) {

            myHandler.removeCallbacks(mMyRunnableHide);

            mTextDisplay.setText("");
            DisplayX();
            }
        });   
    }
Run Code Online (Sandbox Code Playgroud)

removecallbacks不会停止runnable.我究竟做错了什么?我使用的方法是否正确?我只是希望当用户单击按钮时runnable为"Not Run".

谢谢你的帮助.

android runnable

37
推荐指数
3
解决办法
3万
查看次数

使用Handler作为计时器但无法停止

我在2011年在该论坛上的帖子中发现了以下粘贴的代码。我使用计时器触发doSomeWork的执行,但doSomeWork产生了一个asynctask,并且(如我所知)asynctasks只能从UI线程中产生。因此,我转换为使用Handler的postDelayed函数。

现在,此代码确实每十秒钟调用一次doSomeWork,而我的asynctask不再有问题。但是,当我调用stopRepeatingTask()时,它不会停止doSomeWork的执行-它会每十秒钟不断地被调用。

此代码在服务中,已经调用了stopSelf(),但代码仍在运行。Android系统甚至没有将服务显示为正在运行,但仍在调用doSomeWork。

怎么了?我该如何阻止它?谢谢,加里

private int m_interval = 5000; // 5 seconds by default, can be changed later
private Handler m_handler;

@Override
protected void onCreate(Bundle bundle) {
  // ...
  m_handler = new Handler();
}

Runnable m_statusChecker = new Runnable() {
     @Override 
     public void run() {
          doSomeWork(); //this function can change value of m_interval.
          m_handler.postDelayed(m_statusChecker, m_interval);
     }
};

void startRepeatingTask() {
    m_statusChecker.run(); 
}

void stopRepeatingTask() {
    m_handler.removeCallbacks(m_statusChecker); //  <--this does not appear to work
}
Run Code Online (Sandbox Code Playgroud)

multithreading android handler

1
推荐指数
1
解决办法
3853
查看次数