您的位置:首页 > 移动开发 > Android开发

android 启动页与数据保存

2016-09-26 23:24 369 查看

介绍

1、android 市面上大部分app首次启动分为flashActivity、GuideActivity、MainActivity
2、一般情况下如果第一次启动将从flashActivity-->GuideActivity-->MainActivity
3、而当我们将程序退出后台后,再次启动从flashActivity-->MainActivity
那么我今天写一写实现这个过程的两个方法
我们要用到的是安卓持久化的一个类SharedPreference.
下面是我写的一个简单的封装类:


SharedPreferenceUtils

public class SharedPreferenceUtils{
private SharedPreference mSharedPreference ;
private SharedPreference.Editor mEditor;
private static SharedPreferencesUtils instance;//获取单例
public static  SharedPreferencesUtils getInstance(Context context){
if (instance == null){
instance = new SharedPreferencesUtils(context);
}
return instance;
}
public SharedPreferencesUtils(Context context){
mSharedPreferences = context.getSharedPreferences(context.getString(R.string.app_name),Context.MODE_PRIVATE);
mEditor = mSharedPreferences.edit();
}
public void writeBoolean(String key , boolean value){
mEditor.putBoolean(key,value);
mEditor.commit();
}
public boolean readBoolean(String key,boolean defauValue){
return   mSharedPreferences.getBoolean(key, defauValue);
}
public void writeString(String key,String value){
mEditor.putString(key,value);
mEditor.commit();
}
public String readString(String key,String value){
return mSharedPreferences.getString(key,"");
}
public void writeInt(String key,int value){
mEditor.putInt(key,value);
mEditor.commit();
}
public int readInt(String key,int value){
return mSharedPreferences.getInt(key,value);
}
}


第一种

从FlashActivity中进行判断:


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
initData();
}
@Override
protected void initData() {
versionName.setText(getVersionName());
//写一个标记用于判断是否第一次安装
final `SharedPreferencesUtils instance = SharedPreferencesUtils.getInstance(this);`
final boolean isFirst = instance.readBoolean(IS_FIRST,true );//
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
/**
* 详细讲解:
* 1、当用户第一次安装此软件,走到此步时sharedPreferences ,读取的值并没有,给它一个true值,
* 3、而此时将sp中写入减值是flase,那么以后永远不会走这一步
*/
if(isFirst){//第一进入是true
instance.writeBoolean(IS_FIRST,false);//第一次进入写入false
startActivity(new Intent(FlashActivity.this, GuideActivity.class));
finish();
}else {
startActivity(new Intent(FlashActivity.this,MainActivity.class));
finish();
}
}
},FLASH_START_TIME);

}


第二种

在GuideActivity中进行判断


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
SharedPreferencesUtils instance = SharedPreferencesUtils.getInstance(this);
if(!instance.readBoolean("isFirst",true)){
enter();
}
setContentView(R.layout.activity_yindao);
Button btnSkip = (Button) findViewById(R.id.btn_skip);
btnSkip.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
instance.write("isFirst",false);
enter();
}
});
}
private void enter(){
startActivity(new Intent(GuideActivity.this,MainActivity.class));
finish();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: