2016-03-25 10 views
2

Ich habe einen Codeabschnitt, den ich nur beim ersten Aufruf einer bestimmten OnCreate() -Methode (pro App-Sitzung) ausführen möchte, und nicht bei jeder Erstellung der Aktivität. Gibt es eine Möglichkeit, dies in Android zu tun?Code zuerst ausführen OnCreate only

Antwort

1

static Variable verwenden.

static boolean checkFirstTime; 
2

Verwendung sharedpreference ... Sollwert auf true in Präferenz zum ersten Mal ... bei jedem Durchlauf prüfen, ob Wert auf true gesetzt ... und basierend auf codition Code

Für Ex auszuführen.

SharedPreferences preferences = getSharedPreferences("MyPrefrence", MODE_PRIVATE); 
       if (!preferences.getBoolean("isFirstTime", false)) { 
    //your code goes here 
final SharedPreferences pref = getSharedPreferences("MyPrefrence", MODE_PRIVATE); 
        SharedPreferences.Editor editor = pref.edit(); 
        editor.putBoolean("isFirstTime", true); 
        editor.commit(); 
} 
+0

Aber dann müssen Sie es irgendwann wieder auf false setzen oder es wird mit jedem App-Neustart auch zu wahr –

+0

aber wie Sie in Ihrem Beitrag erwähnt haben ... Sie wollen es nur einmal ausführen .. –

+0

Pro App Sitzung –

2

Verwendung statische Variable in Ihrer Aktivität, wie unten

private static boolean DpisrunOnce=false; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_run_once); 
    if (DpisrunOnce){ 
     Toast.makeText(getApplicationContext(), "already runned", Toast.LENGTH_LONG).show(); 
//is already run not run again 
    }else{ 
//not run do yor work here 
     Toast.makeText(getApplicationContext(), "not runned", Toast.LENGTH_LONG).show(); 
     DpisrunOnce =true; 
    } 
} 
gezeigt
11

protected void onCreate(Bundle savedInstanceState) hat alles, was Sie brauchen.

Wenn savedInstanceState == null dann ist es das erste Mal.

Daher müssen Sie keine extra-statischen Variablen einführen.

+0

Versucht dies und aus irgendeinem Grund savedInstanceState ist immer Null so hoffnungsvoll -time-Code löst immer aus –