您的位置:首页 > 其它

安卓首次打开应用与Button状态保存

2016-07-21 11:23 260 查看
小弟在众多大哥的指导,引领下,已在安卓开发的路上走了好几个月,一直想写博客来着,但没什么东西写,或者又是不知道写什么。但是日复一日,从想写到现在已经过了一个多月,终于下决心写一篇了!请大家多多指教。

本文是关于应用第一次启动的时候问题进行解决,很多应用都有一个引导页和首屏。根据个人理解,他们在运行一次之后就不再出现。虽然也知道是用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;
}

}


});
感谢各位观看,欢迎提出意见与建议。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: