【发布时间】:2014-03-20 09:14:58
【问题描述】:
假设我的 Activity 中有一个 TimerTask,用于 UI 中的自动收报机。每次调用 Timer 时,我都会获取 TextView 的值并将其递增 1。如果 onPause 和 onResume 未实现并且我将进入后台并返回,那么 UI 中的预期行为是什么。当我在后台时,值会更新吗?
示例代码
public class home extends Activity {
private android.os.Handler mTimerHandler = new android.os.Handler();
private Timer mTimer;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);
mTimer = new Timer();
mTimer.schedule(getTimer(), 1, 1000);
}
private TimerTask getTimer() {
final TextView counterView = (TextView) findViewById(R.id.counter);
return new TimerTask() {
public void run() {
mTimerHandler.post(new Runnable() {
public void run() {
long currentValue = Long.parseLong(counterView.getText().toString());
counterView.setText(String.valueOf(currentValue));
}
});
}
};
}
}
【问题讨论】:
-
“预期的行为是什么...” 抱歉 - 我在星期四不做读心术。请发布您的代码。
-
对不起。我编辑了这个问题。
-
你还没有发布任何代码。当
Activity不可见(肯定暂停,可能停止)时使用BroadcastReceiver和TimerTask之类的东西可能会或可能不会起作用。没有代码,没有人可以回答你的问题。它可能会按预期工作,也可能会崩溃和燃烧。如果系统资源不足,Activity也有可能被破坏,然后它会被 GC'd。 -
我更新了问题并添加了示例代码。
-
stackoverflow.com/a/58504433/5219642 了解更多详情,您可以查看此