Chi*_*oni 27 android android-preferences sharedpreferences
我想在我的应用程序中只运行一段代码,并且是第一次运行它时(新安装的应用程序).我怎么能这样做,任何人都可以解释给出一段代码.
实际上,在我的android项目中,我想创建数据库并在第一次运行时插入一些值.之后,该特定代码不应该再次运行.如何通过SharedPreferences或Preferences实现此机制.
示例代码将更有帮助.
pep*_*kin 39
在此之前,您可以使用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();
}
}
Run Code Online (Sandbox Code Playgroud)
不要忘记在清单中放置活动声明,以及它的intentfilters(action = MAIN,category = 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 ran.
SharedPreferences.Editor editor = prefs.edit();
editor.putBoolean("firstTime", true);
editor.commit();
}
}
Run Code Online (Sandbox Code Playgroud)
所有你需要的工作,都放在applicationAndroidManifest.xml属性android:name =".app"的标签中.
<!-- other xml stuff -->
<application ... android:name=".App">
<!-- yet another stuff like nextline -->
<activity ... />
</application>
Run Code Online (Sandbox Code Playgroud)
San*_*lik 14
你可以尝试:
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();
}
Run Code Online (Sandbox Code Playgroud)
在创建的第一个活动中写下这个.然后代码将不再执行.
无论您需要在应用程序中的何处运行此代码:
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();
}
Run Code Online (Sandbox Code Playgroud)
在这些情况下,我要做的是:
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
}
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助
| 归档时间: |
|
| 查看次数: |
33732 次 |
| 最近记录: |