我想在應用程序中只運行一段代碼,並且當我第一次運行它時(新安裝的應用程序)。我怎麼能這樣做,任何人都可以解釋給一段代碼。安裝應用程序時只運行一段代碼
其實,在我的android項目中,我想創建數據庫並只在第一次運行時插入一些值。之後,該特定的代碼不應該再次運行。我如何通過SharedPreferences或首選項實現此機制。
示例代碼會更有幫助。
我想在應用程序中只運行一段代碼,並且當我第一次運行它時(新安裝的應用程序)。我怎麼能這樣做,任何人都可以解釋給一段代碼。安裝應用程序時只運行一段代碼
其實,在我的android項目中,我想創建數據庫並只在第一次運行時插入一些值。之後,該特定的代碼不應該再次運行。我如何通過SharedPreferences或首選項實現此機制。
示例代碼會更有幫助。
都可以使用SQLiteOpenHelper之前。這是數據庫處理的首選方式。這個類有一個onCreate(SQLiteDatabase)
方法,在首次創建數據庫時調用。我認爲它很適合你。
如果您想要更大的靈活性,並且您的第一次邏輯不僅與數據庫綁定,您可以使用前面提供的示例。你只需要把它放在啓動點。
有2個啓動點。如果只有單一的活動,你可以把你的代碼onCreate
方法,所以這將是這樣的:
public void onCreate(Bundle savedInstanceState) {
// don't forget to call super method.
super.onCreate(savedInstanceState);
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
if (!prefs.getBoolean("firstTime", false)) {
// <---- run your one time code here
databaseSetup();
// mark first time has runned.
SharedPreferences.Editor editor = prefs.edit();
editor.putBoolean("firstTime", true);
editor.commit();
}
}
不要忘了把activity declaration in manifest,以及它的intentfilters(行動= MAIN
,類別= LAUNCHER
)。
如果您有多個活動並且您不想複製啓動邏輯,則可以將您的初始化邏輯放在Application實例中,該實例在所有活動(以及其他組件,如服務,廣播接收者,內容提供商)。
只要創建類這樣的:
public class App extends Application {
@Override
public void onCreate() {
super.onCreate();
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
if (!prefs.getBoolean("firstTime", false)) {
// <---- run your one time code here
databaseSetup();
// mark first time has runned.
SharedPreferences.Editor editor = prefs.edit();
editor.putBoolean("firstTime", true);
editor.commit();
}
}
所有你需要這個工作,放在application
標籤在AndroidManifest.xml屬性機器人:名字=「應用程序」。
<!-- other xml stuff -->
<application ... android:name=".App">
<!-- yet another stuff like nextline -->
<activity ... />
</application>
你可以嘗試:
SharedPreferences wmbPreference = PreferenceManager.getDefaultSharedPreferences(this);
boolean isFirstRun = wmbPreference.getBoolean("FIRSTRUN", true);
if (isFirstRun)
{
// Code to run once
SharedPreferences.Editor editor = wmbPreference.edit();
editor.putBoolean("FIRSTRUN", false);
editor.commit();
}
寫在你的第一個活動上創建。然後代碼將不會再執行。
即地方; – pollaris 2017-09-27 15:10:37
無論您需要在您的應用程序運行此代碼:
firstTime
是在共享偏好如果沒有
firstTime
另存爲共享偏好事情是這樣的:
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
if(!prefs.getBoolean("firstTime", false)) {
// run your one time code here
SharedPreferences.Editor editor = prefs.edit();
editor.putBoolean("firstTime", true);
editor.commit();
}
這裏是我做的這些情況:
wmbPreference = PreferenceManager.getDefaultSharedPreferences(this);
isFirstRun = wmbPreference.getBoolean("FIRSTRUN", true);
if (isFirstRun)
{
// Do your magic here
SharedPreferences.Editor editor = wmbPreference.edit();
editor.putBoolean("FIRSTRUN", false);
editor.commit();
}else{
//what you do everytime goes here
}
希望這有助於super.onCreate(savedInstanceState)後
非常感謝你,你的代碼讓我從世界中拯救了我。 – 2017-05-10 09:53:28