活动正在重置值

时间:2017-11-17 11:10:04

标签: android android-activity background task

根据用户的行走,我有一个总和距离的活动。问题是当应用程序进入后台并且在大约50分钟后我恢复活动时,值再次开始。 我已经尝试了很多东西来解决这个问题而没有成功。

有人有任何想法吗?

由于

5 个答案:

答案 0 :(得分:1)

您需要在活动中实施以下两种方法:

public void onRestoreInstanceState(Bundle savedInstanceState)
public void onSaveInstanceState(Bundle outState)

onSaveInstanceState()中,您会保留所有相关数据,并在onRestoreInstanceState()中检索这些持久值并刷新UI数据。

<强>更新

实现此方法后,您需要添加onCreate方法

@Override
protected void onCreate(Bundle savedInstanceState) {
  if (savedInstanceState != null) {
        if (savedInstanceState.containsKey(YOUR_KEY_DATA)) {
            long your_long = savedInstanceState.getLong(YOUR_KEY_DATA, 0);
      ......
}

答案 1 :(得分:0)

您始终可以使用sharedPreference来保存进度或类似值

//initialize

SharedPreferences pref = getApplicationContext().getSharedPreferences("MyPref", MODE_PRIVATE); 
    Editor editor = pref.edit();    



  //To save values
    editor.putBoolean("key_name1", true);           // Saving boolean - true/false
        editor.putInt("key_name2", "int value");        // Saving integer
        editor.putFloat("key_name3", "float value");    // Saving float
        editor.putLong("key_name4", "long value");      // Saving long
        editor.putString("key_name5", "string value");  // Saving string
        editor.commit(); // commit changes

//and to get values
 pref.getBoolean("key_name1", null);         // getting boolean
    pref.getInt("key_name2", null);             // getting Integer
    pref.getFloat("key_name3", null);           // getting Float
    pref.getLong("key_name4", null);            // getting Long
    pref.getString("key_name5", null);          // getting String

示例来自here

答案 2 :(得分:0)

//add below line in manifest where initialize activity

         <activity
            android:name=".activity.MainActivity"  
            android:configChanges="orientation|screenSize">
        </activity>

答案 3 :(得分:0)

有一个简单的解决方案转到您的清单文件,并针对该特定活动添加以下提供的行:

<activity
        android:name=".yourActivity"
        android:launchMode="singleTask"
        />

答案 4 :(得分:0)

解决方案是Run Background service,因为即使在后台,也需要提供应用