使用的是網絡請求的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; } } };新聞熱點
疑難解答