根据用户的行走,我有一个总和距离的活动。问题是当应用程序进入后台并且在大约50分钟后我恢复活动时,值再次开始。 我已经尝试了很多东西来解决这个问题而没有成功。
有人有任何想法吗?
由于
答案 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,因为即使在后台,也需要提供应用