我有两个活动(MainActivity,Sample),它们扩展到我创建的自定义活动(BaseActivity)。我创建了一个处理程序,它在BaseActivity中每5秒运行一次runnable。在BaseActivity中,我已经覆盖了onpause和onresume方法,以便在需要时启动和停止处理程序。 当我在BaseActivity的onPause中删除处理程序的回调时,处理程序停止但在MainActivity暂停时不会停止。下面是代码。
public class BaseActivity extends Activity{
public int mInterval = 5000;
public Handler mHandler;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
System.out.println("Oncreate baseactivity");
mHandler = new Handler();
}
Runnable mStatusChecker = new Runnable() {
@Override
public void run() {
Log.d("MyApp", "every 5 secs");
mHandler.postDelayed(mStatusChecker, mInterval);
}
};
@Override
protected void onPause() {
super.onPause();
System.out.println("OnPause baseactivity");
//stopRepeatingTask();
}
void startRepeatingTask() {
mStatusChecker.run();
}
void stopRepeatingTask() {
mHandler.removeCallbacks(mStatusChecker);
}
@Override
protected void onResume() {
super.onResume();
System.out.println("Onresume baseactivity");
startRepeatingTask();
}
}
public class MainActivity extends BaseActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void newpage(View v){
startActivity(new Intent(this,Sample.class));
}
@Override
protected void onPause() {
super.onPause();
System.out.println("onpause mainactivity");
stopRepeatingTask();
}
}
public class Sample extends BaseActivity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView tv = (TextView) findViewById(R.id.txt);
tv.setText("sample activity");
}
}
调用BaseActivity和mainActivity的Onpause,但如果应用程序关闭,处理程序仍会运行。我希望很清楚。
答案 0 :(得分:0)
我认为开始线程我们应该使用start()
方法,
并在BaseActivity中编写MainActivity的onPause方法并在MainActivity中删除(我的意思是停止重复任务)。
我希望它有效。