安装应用程序时只运行一段代码
我想在应用程序中只运行一段代码,并且当我第一次运行它时(新安装的应用程序)。我怎么能这样做,任何人都可以解释给一段代码。安装应用程序时只运行一段代码
其实,在我的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