计算Android应用程序进入后台的次数

时间:2017-01-28 00:59:01

标签: android-layout android-lifecycle

我正在开发一款应用程序,它可以计算应用程序进入后台的次数。它还会在方向更改时保留值。虽然我已经将它用于所有用例,但我有一个用例无效。

案例:当我按主页按钮,更改手机的方向并重新打开应用程序时,它会以横向模式打开,但背景计数不会增加。 我已经尝试在所有生命周期方法中设置值。它不起作用。希望有人可以帮助我。 `

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

2 个答案:

答案 0 :(得分:1)

本文包含有用信息:https://developer.android.com/guide/topics/resources/runtime-changes.html,尤其是有关处理变更的部分。

尝试在已禁用的onConfigurationChanged()上处理它,并在方向更改时重新启动活动。否则,您可能会通过本文找到适用于您的方案的案例。

通过阅读问题描述,我假设如果您不旋转设备,应用程序将按预期工作。

答案 1 :(得分:0)

您需要在SharedPreferences中保留计数。每次重新打开应用程序时,请阅读SharedPreferences中的最后一个值。每次隐藏应用程序时,都会增加并保存到SharedPreferences。

然后你可以使用@kiran code来计算:

echo