安卓首次打开应用与Button状态保存
来源:互联网 发布:linux安装jdk报redcat 编辑:程序博客网 时间:2024/05/14 15:04
小弟在众多大哥的指导,引领下,已在安卓开发的路上走了好几个月,一直想写博客来着,但没什么东西写,或者又是不知道写什么。但是日复一日,从想写到现在已经过了一个多月,终于下决心写一篇了!请大家多多指教。
本文是关于应用第一次启动的时候问题进行解决,很多应用都有一个引导页和首屏。根据个人理解,他们在运行一次之后就不再出现。虽然也知道是用sp存储的,但其中原理自己也很是迷茫。就在一个帖子上找到了例子,完美的解决了这个问题。废话不多说了,上代码:
`public class WelcomePage extends Activity {
private boolean isFirstIn = false; //boolean状态为false
private static final int TIME = 2000;//停顿时间为2000毫秒
private static final int GO_HOME = 1000; //执行时间
private static final int GO_GUIDE = 1001; //执行时间
private SharedPreferences sp;
private String userno, userpwd;
private String result;
private SharedPreferences spkey;// 司机信息
private Handler mHandler = new Handler() {
public void handleMessage(android.os.Message msg) {
switch (msg.what) {
case GO_HOME:
goHome();
break;
case GO_GUIDE:
goGuide();
break;
}
};
};
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.loding); //这是一个首启动图
init();
}
private void init() {
SharedPreferences perPreferences = getSharedPreferences(“jike”,
MODE_PRIVATE);
isFirstIn = perPreferences.getBoolean(“isFirstIn”, true);
//再此判断是否第一次进入,如果为是则进入登录方法,否则进入main(要注意验证帐号是否登录成功)
if (!isFirstIn) {
mHandler.sendEmptyMessageDelayed(GO_HOME, TIME);
} else {
mHandler.sendEmptyMessageDelayed(GO_GUIDE, TIME);
Editor editor = perPreferences.edit();
editor.putBoolean(“isFirstIn”, false);
editor.commit();
}
}
//进行联网操作直接进入main的方法
private void goHome() {
//Too
}//进入登录界面的方法private void goGuide() {Intent i = new Intent(WelcomePage.this, LoginH.class);startActivity(i);finish();}
}`
下面讲的这个与上面的方法差不多,修改的代码不大。原理一样,是受上面的启发而得。
是判Button是否打开来接受推送
private boolean isFirstIn = false;//定义boolean
private SharedPreferences sp;
private static final int TIME = 2000;//初始时间没用到
private static final int GO_HOME = 1000;
private static final int GO_GUIDE = 1001;
列表内容
private Handler mHandler = new Handler() { public void handleMessage(android.os.Message msg) { switch (msg.what) { case GO_HOME: Log.d("data","whta????"); //如果不是第一次打开则跳出 break; case GO_GUIDE: //如果是则添加个sp存储 Editor editor2=spkey.edit(); editor2.putString("jpush","1"); editor2.commit(); Log.d("data","omg????"); ckeckStatus=spkey.getString("jpush", ""); break; } }; }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.setting); init(); initData(); }
private void init() { SharedPreferences perPreferences = getSharedPreferences("jike", MODE_PRIVATE); isFirstIn = perPreferences.getBoolean("ck", true); if (!isFirstIn) { mHandler.sendEmptyMessageDelayed(GO_HOME, 0); //执行时间为0; //线程执行时间与事件 Log.d("data","whta1111????"); } else { mHandler.sendEmptyMessageDelayed(GO_GUIDE, 0); //线程执行时间与事件 Editor editor = perPreferences.edit(); editor.putBoolean("ck", false); editor.commit(); Log.d("data","omg1111????"); }
当用户点击按钮时如果为1,开启推送,否则关闭。存储一个状态,下次读取,来显示check的开与关
spkey = getSharedPreferences("driverMessage", MODE_PRIVATE); ck_jpush = (CheckBox) findViewById(R.id.ck_jpush); ck_jpush.setOnClickListener(new OnClickListener() { @Override if (ck_jpush.isChecked()) { Toast.makeText(SettingActivity.this, "已开启推送设置", Toast.LENGTH_SHORT).show(); Editor editor2=spkey.edit(); editor2.putString("jpush","1"); editor2.commit(); JPushInterface.resumePush(getApplicationContext()); } else { Toast.makeText(SettingActivity.this, "已关闭推送", Toast.LENGTH_SHORT).show(); Editor editor2=spkey.edit(); editor2.putString("jpush","0"); editor2.commit(); JPushInterface.stopPush(getApplicationContext()); } }
//此方法用于进入界面获取上次的状态的并进行check的现实与隐藏
private void initData(){ ckeckStatus=spkey.getString("jpush", ""); Log.d("data", ckeckStatus+"fdsf"); if(ckeckStatus=="0"||ckeckStatus.equals("0")){ //ckeckStatus=spkey.getString("jpush", null); ck_jpush.setChecked(false); JPushInterface.stopPush(getApplicationContext()); return; } else if(ckeckStatus=="null"||ckeckStatus.equals("null")||ckeckStatus==null){ ck_jpush.setChecked(true); JPushInterface.resumePush(getApplicationContext()); return; } else if(ckeckStatus=="1"||ckeckStatus.equals("1")){ ck_jpush.setChecked(true); JPushInterface.resumePush(getApplicationContext()); return; } }
});感谢各位观看,欢迎提出意见与建议。
- 安卓首次打开应用与Button状态保存
- 安卓自定义View的状态保存与恢复
- 安卓数据保存登录状态
- Android - 保存用户首次使用状态(SharedPreferences)
- 安卓应用首次进入实现人物行走导航效果
- 安卓应用首次启动白屏的原因总结
- 解决首次安装时点击“打开”与点击应用图标开启应用冲突
- Android 应用保存状态
- 安卓调用应用打开文件
- 安卓开发41:状态保存 Bundle savedInstanceState
- 7.15首次安卓面试
- 安卓学习笔记(三)Button与 ImageButton
- 安卓检查GPS打开状态并跳转打开导航页面写法
- html5打开安卓本地应用android配置
- 安卓button控件学习
- 安卓 Button 样式设置
- 安卓开发之Button
- 自定义安卓Button样式
- AndroidManifest.xml详细分析
- 检测手机中是否安装了google地图,没有则提示安装,并跳转到地图查找特定的地点
- 01-复杂度1 最大子列和问题 (20分)
- TelephonyManager&GsmCellLocation类的方法详解
- Android实现短信监听并且转发到指定的手机号,转发后不留痕
- 安卓首次打开应用与Button状态保存
- 判断手机网络是否连接
- Intent跳转系统的应用
- java 网络 InetAddress和NetworkInterface
- html5 css 万能的position大法
- android-support-v7使用
- React Native和原生iOS Objective-C的交互解决方案
- Gallery学习————检测手机中是否存在外部存储设备
- C/C++中函数传参方式简述