我正在开发一款应用程序,它可以计算应用程序进入后台的次数。它还会在方向更改时保留值。虽然我已经将它用于所有用例,但我有一个用例无效。
案例:当我按主页按钮,更改手机的方向并重新打开应用程序时,它会以横向模式打开,但背景计数不会增加。 我已经尝试在所有生命周期方法中设置值。它不起作用。希望有人可以帮助我。 `
public class MainActivity extends AppCompatActivity {
private int clickCount =0, backgroundCount = 0;
TextView tvClickCountValue, tvBackgroundCountValue;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if( savedInstanceState != null){
clickCount = savedInstanceState.getInt("COUNT");
backgroundCount = savedInstanceState.getInt("BGCOUNT");
}
setContentView(R.layout.activity_main);
tvClickCountValue = (TextView) this.findViewById(R.id.tvClickCountValue);
tvBackgroundCountValue = (TextView) this.findViewById(R.id.tvBackgroundCountValue);
setView(MainActivity.this);
}
public void onClick(View v){
clickCount += 1;
tvClickCountValue.setText(Integer.toString(clickCount));
}
public void setView(Context ctx){
tvClickCountValue.setText(Integer.toString(clickCount));
tvBackgroundCountValue.setText(Integer.toString(backgroundCount));
}
@Override
protected void onStop() {
super.onStop();
backgroundCount += 1;
}
@Override
protected void onResume() {
super.onResume();
tvClickCountValue.setText(Integer.toString(clickCount));
tvBackgroundCountValue.setText(Integer.toString(backgroundCount));
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putInt("COUNT", clickCount);
outState.putInt("BGCOUNT", backgroundCount);
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
clickCount = savedInstanceState.getInt("COUNT");
backgroundCount = savedInstanceState.getInt("BGCOUNT");
}
}
答案 0 :(得分:1)
本文包含有用信息:https://developer.android.com/guide/topics/resources/runtime-changes.html,尤其是有关处理变更的部分。
尝试在已禁用的onConfigurationChanged()
上处理它,并在方向更改时重新启动活动。否则,您可能会通过本文找到适用于您的方案的案例。
通过阅读问题描述,我假设如果您不旋转设备,应用程序将按预期工作。
答案 1 :(得分:0)
您需要在SharedPreferences中保留计数。每次重新打开应用程序时,请阅读SharedPreferences中的最后一个值。每次隐藏应用程序时,都会增加并保存到SharedPreferences。
然后你可以使用@kiran code来计算:
echo