有效地定期更新变量

问题描述 投票:0回答:2

在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();
    }
}
android performance timer sharedpreferences android-handler
2个回答
1
投票

是否更容易记录应用程序打开的时间并从中计算整数的值?像这样的东西:

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

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


0
投票

启动NOT_STICKY服务并将Timer代码投入使用。因此,只要您的应用程序位于前台或后台,变量就会自动递增,只要应用程序关闭,服务就会停止,变量也不会自行递增。

© www.soinside.com 2019 - 2024. All rights reserved.