如何杀死Android中的PostDelayed方法

mav*_*sha 7 android android-intent postdelayed android-activity

我使用了publishDelayed方法来刷新我的Activity,这很好用.但问题是,即使按下后退按钮后延迟方法,也可以回调上一个活动.

//延迟刷新活动后30000毫秒的处理程序

mHandler.postDelayed(new Runnable() {
public void run() {
               dostuff();

        }
            }, 30000);
    }

protected void dostuff() {
Intent intent = getIntent();
finish();startActivity(intent);
Toast.makeText(getApplicationContext(), "refreshed", Toast.LENGTH_LONG).show();
}

public void onBackPressed() {
        super.onBackPressed();
        finish();
        mHandler.removeCallbacks(null);
        }

protected void onStop() {
            mHandler.removeCallbacks(null);
        super.onStop();
    }
Run Code Online (Sandbox Code Playgroud)

Pra*_*abu 6

你只是用这个可能对你有帮助

   Runnable runobj=new Runnable() {
public void run()
{
 dostuff();

 }
  };
 mHandler.postDelayed(runobj, 30000);
   }
public void onBackPressed() 
{
super.onBackPressed();
mHandler.removeCallbacks(runobj);
}
Run Code Online (Sandbox Code Playgroud)


Eld*_*abu 3

解决此问题的方法是:

在执行 dostuff() 方法时,只需检查 Activity.isFinising() 是否执行即可。如果完成了,就返回。

当您按下后退键时,活动将完成,之后如果 doStuff() 执行,它将不会执行任何操作。