Ich entwickle eine App, die zählt, wie oft die App in den Hintergrund geht. Es behält auch die Werte bei, wenn die Ausrichtung geändert wird. Obwohl ich alle Anwendungsfälle funktioniere, habe ich einen Anwendungsfall, der nicht funktioniert.Zählen, wie oft Android-App in den Hintergrund geht
Fall: Wenn ich die Home-Taste drücke, ändere die Ausrichtung des Telefons und öffne die App erneut. Es öffnet sich im Querformat, aber die Hintergrundzählung erhöht sich nicht. Ich habe versucht, Werte in allen Lebenszyklusmethoden zu setzen. Es funktioniert nicht. Hoffe jemand kann mir dabei helfen. `
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");
}
}
'onPause()' Methode wird aufgerufen, wenn App in den Hintergrund geht oder geschlossen wird (oder getötet wird), Zähler in 'onPause()' inkrementieren und in 'onDestroy' dekrementieren, um Schließen zu berücksichtigen. –
Dies ist ein interessanter Artikel: http://stackoverflow.com/questions/4414171/how-to-detect-when-an-android-app-goes-to-the-background-and-come-back-to-the- fo? rq = 1 – Stanojkovic
Sie können Sharedreference verwenden. – Tauqir