使用的是网络请求的okhttp框架
这个博客很好的解释okhttp框架值得推荐
http://blog.csdn.net/lmj623565791/article/details/47911083
简单的SharedPreferences:
Preferences 在Android当中被用来记录应用,以及用户喜好等等,它可以用来保存
一些简单的数据类型,Boolean,int,String等
数据的存入必须通过SharedPreferences对象的编辑器对象Editor来实现,存入(put)之后与写入数据库类似一定要commit。
apply()一下就可以
存入的代码:
SharePreferences editor = pref.edit();
if(remember_pass.isChecked()){
editor.putBoolean("remember_pass",true);
editor.putString("account",Account);
editor.putString("password",passWord);
}
else{
editor.clear();
}
editor.apply();
写入的代码:
直接get对应的类型就可以
它有两个参数,第一个是参数对应的名称,第二个是参数对应的是若访问失败,
则返回的值
boolean isRemember = pref.getBoolean("remember_pass",false);
String account = pref.getString("account","");
String password = pref.getString("password","");
对于耗时的问题,我们都在在子线程中运行,但有一点在子线程中不允许更新UI,
在android4.0之后网络请求必须在子线程中完成
private void sendRequestWithOkHttp(){
new Thread(){
public void run(){
// Toast.makeText(MainActivity.this,"you click it",Toast.LENGTH_LONG).show();
try{
//构建request请求
RequestBody requestBody = new FormEncodingBuilder()
.add("loginname",Account)
.add("password",passWord)
.add("is phone","1")
.build();
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("http://218.25.54.49:2222/yxh_web/syrj_security_check")
.post(requestBody)
.build();
//执行
Response response = client.newCall(request).execute();
responseData = response.body().string();
Message msg = new Message();
msg.what = UpData;
handler.sendMessage(msg);
// showResponse(responseData);
}catch(Exception e){
e.printStackTrace();
}
}
}.start();
}
为了能够更新UI我们以msg为中间的媒介,写了handlerMessage()来处理
更新UI,Handle类的定义:
主要接受子线程发送的数据,并用此数据配合主线程更新UI
private Handler handler = new Handler() {
public void handleMessage(Message msg) {
switch (msg.what) {
case UpData:
try{
JSONObject jsonObject = new JSONObject(responseData);
String flag = jsonObject.getString("resultflag");
msg1 = jsonObject.getString("error_msg");
//获取日期
SimpleDateFormat formatter = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
Date curDate = new Date(System.currentTimeMillis());
String Date = formatter.format(curDate);
//数据库操作
SQLiteDatabase db = dbHelper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("Account",Account);
values.put("Password",passWord);
values.put("If_Log",msg1);
values.put("Date",Date);
db.insert("Record",null,values);
values.clear();
if(flag.equals("1")){
editor = pref.edit();
if(remember_pass.isChecked()){
editor.putBoolean("remember_pass",true);
editor.putString("account",Account);
editor.putString("password",passWord);
}
else{
editor.clear();
}
editor.apply();
Intent intent = new Intent(MainActivity.this,Main2Activity.class);
startActivity(intent);
}
else{
// Log.d("eee",msg1);
Toast.makeText(MainActivity.this,msg1,Toast.LENGTH_LONG).show(); }
}catch(Exception e){
e.printStackTrace();
}
break;
default:
break;
}
}
};