android 启动页与数据保存
16lz
2022-06-06
介绍
1、android 市面上大部分app首次启动分为flashActivity、GuideActivity、MainActivity2、一般情况下如果第一次启动将从flashActivity-->GuideActivity-->MainActivity3、而当我们将程序退出后台后,再次启动从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(); }
更多相关文章
- Activity中的四种启动模式
- Android开机log分析
- Android(安卓)back键ANR,与onPause,onDestory “延迟执行”的问题
- android 测试简介
- Android中关于startActivityForResult()在activity不同启动模式
- android启动过程
- android adb启动失败问题 adb server is out of date. killing..
- android:launchMode="singleTask" 与 onNewIntent(Intent intent
- WiFi流程