我只想在我的应用程序中运行一段代码,并且是在我第一次运行它时(新安装的应用程序)。我怎么能这样做,任何人都可以解释给出一段代码。
实际上,在我的 android 项目中,我只想在第一次运行时创建数据库并插入一些值。之后,该特定代码不应再次运行。我如何通过SharedPreferences或Preferences实现这种机制。
示例代码会更有帮助。
我只想在我的应用程序中运行一段代码,并且是在我第一次运行它时(新安装的应用程序)。我怎么能这样做,任何人都可以解释给出一段代码。
实际上,在我的 android 项目中,我只想在第一次运行时创建数据库并插入一些值。之后,该特定代码不应再次运行。我如何通过SharedPreferences或Preferences实现这种机制。
示例代码会更有帮助。
首先你可以使用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 ran.
SharedPreferences.Editor editor = prefs.edit();
editor.putBoolean("firstTime", true);
editor.commit();
}
}
不要忘记将活动声明以及它的意图过滤器(action = MAIN
, category = LAUNCHER
)放在 manifest 中。
如果您有多个活动并且不想重复启动逻辑,则可以将初始化逻辑放在应用程序实例中,该实例在所有活动(以及其他组件,例如服务、广播接收器、内容提供者)之前创建.
只需创建这样的类:
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 ran.
SharedPreferences.Editor editor = prefs.edit();
editor.putBoolean("firstTime", true);
editor.commit();
}
}
为此,您只需将其放入application
AndroidManifest.xml 属性 android:name=".App" 的标记中。
<!-- other xml stuff -->
<application ... android:name=".App">
<!-- yet another stuff like nextline -->
<activity ... />
</application>
你可以试试:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
SharedPreferences wmbPreference = PreferenceManager.getDefaultSharedPreferences(this);
boolean isFirstRun = wmbPreference.getBoolean("FIRSTRUN", true);
SharedPreferences.Editor editor = wmbPreference.edit();
if (isFirstRun){
// Code to run once
editor.putBoolean("FIRSTRUN", false);
editor.apply();
}
在你的第一个创建活动中写下这个。那么之后的代码就不会再执行了。
这就是我在这些情况下所做的:
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
}
希望这可以帮助
无论您需要在应用程序中的何处运行此代码:
firstTime
检查共享首选项中的布尔值是否为 True如果不
firstTime
为 true像这样的东西:
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();
}