在Android中定期更新变量的最有效方法是什么?
我有整数值必须每秒增加(仅当应用程序打开时),并且它应该可以通过所有活动/片段访问。
现在这是我的代码:
MainActivity中的onCreate():
Timer timer = new Timer();
TimerTask updateValues = new UpdateValues();
timer.scheduleAtFixedRate(updateValues, 0, 1000);
和UpdateValues类:
public static final String MY_PREFS_NAME = "MyPrefsFile"
class UpdateValues extends TimerTask {
public void run() {
SharedPreferences sharedPref = getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPref.edit();
int first = sharedPref.getInt("first_key", 0);
editor.putInt("first_key", first + 1);
// a lot of stuff in here
editor.apply();
}
}
是否更容易记录应用程序打开的时间并从中计算整数的值?像这样的东西:
public int getValue() {
return (System.currentMillis() - startTimeMillis) / MILLIS_PER_SECOND;
}
除非我误解了你的问题,否则你真的不需要改变任何状态来计算自应用程序启动以来的秒数。
启动NOT_STICKY服务并将Timer代码投入使用。因此,只要您的应用程序位于前台或后台,变量就会自动递增,只要应用程序关闭,服务就会停止,变量也不会自行递增。