高效并定期更新变量

时间:2018-09-09 15:36:10

标签: android performance timer sharedpreferences android-handler

在Android中定期更新变量的最有效方法是什么?

我有Integers(整数),其值必须每秒增加一次(仅在打开应用程序时),并且应该可以通过所有活动/片段进行访问。

现在这是我的代码:

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();
    }
}

2 个答案:

答案 0 :(得分:1)

记录打开应用程序的时间并由此计算出整数值是否更容易?像这样:

public int getValue() {
    return (System.currentMillis() - startTimeMillis) / MILLIS_PER_SECOND;
}

除非我误解了您的问题,否则您实际上不需要更改任何状态来计算自应用程序启动以来的秒数。

答案 1 :(得分:0)

启动一个NOT_STICKY服务,并将Timer代码投入使用。因此,只要您的应用程序处于前台或后台,变量就会不断增加自身,并且一旦应用程序关闭,服务就会停止,变量也不会自身增加。