Android與PHP聯合開發已經成為現代移動應用的標配,而為了更好的開發方式,我們需要遵循一些最佳實踐來保證代碼的質量和易用性。
首先,對于Android與PHP的實時通信,我們需要遵循“保持輕量”的原則。這意味著,盡可能減少服務端與客戶端之間通信的數據量,從而使應用程序更高效。為了遵循這個原則,我們可以使用Json作為通用的數據格式,并且采用少數量的請求方式。
其次,我們需要最大限度地避免在安卓客戶端應用程序中使用PHP邏輯。這不僅可提升應用程序的性能,同時也有助于減少代碼中出現常見的錯誤。我們可以將邏輯處理遷移到服務端上,使用PHP來處理事務,并返回必要的數據。相應的服務端腳本為:
pre'success', 'msg' =>'Congratulations, data successfully received on server side!');
break;
default:
$json = array('status' =>'failure', 'msg' =>'Invalid request received!');
break;
}
header('Content-type: application/json');
echo json_encode($json);
/pre
接著,我們需要確保安卓客戶端程序不會阻止或暫停先前的操作。這可以通過在Android上使用異步任務來實現,這將允許應用程序繼續執行其他操作,直到當前操作完成。以下是簡單的異步任務的示例代碼:
pre
public class MyTask extends AsyncTask{
ProgressDialog dialog;
@Override
protected void onPreExecute() {
super.onPreExecute();
// 登記進度框
dialog = new ProgressDialog(MainActivity.this);
dialog.setTitle("Processing...");
dialog.setMessage("Please wait.");
dialog.setCancelable(false);
dialog.show();
}
@Override
protected Void doInBackground(Void... params) {
try {
// 執行PHP腳本
URL url = new URL("http://www.example.com/my_script.php?action=my_action");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestProperty("Content-Type", "application/json; charset=UTF-8");
connection.setRequestMethod("GET");
InputStream inputStream = connection.getInputStream();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int len;
while ((len = inputStream.read(buffer)) >-1) {
baos.write(buffer, 0, len);
}
baos.flush();
String data = new String(baos.toByteArray());
JSONObject jObj = new JSONObject(data);
String status = jObj.getString("status");
String message = jObj.getString("msg");
// 處理返回值
} catch (Exception e) {}
return null;
}
@Override
protected void onPostExecute(Void result) {
super.onPostExecute(result);
// 刪除進度框
if (dialog.isShowing()) {
dialog.dismiss();
}
}
}
/pre
最后,我們需要遵循一些安全準則,以確保我們的應用程序不會受到攻擊。這可以通過使用HTTPS安全協議,以加密數據傳輸,并通過服務端的身份驗證來實現。以下代碼片段演示了如何通過使用加密傳輸機制確保更高的安全性:
pre
URL url = new URL("https://www.example.com/my_script.php");
HttpsURLConnection connection = (HttpsURLConnection) url.openConnection();
// 設置客戶端證書
connection.setSSLSocketFactory(certManager.getSocketFactory());
// 驗證服務器證書
connection.setHostnameVerifier(new SecureHostnameVerifier());
// 設置請求頭部信息
connection.setRequestProperty("Content-Type", "application/json");
connection.setDoOutput(true);
connection.setRequestMethod("POST");
// 寫入數據
OutputStreamWriter wr = new OutputStreamWriter(connection.getOutputStream());
wr.write(data);
wr.flush();
// 讀取服務器響應
InputStream stream = connection.getInputStream();
BufferedReader rd = new BufferedReader(new InputStreamReader(stream));
String line;
String response = "";
while ((line = rd.readLine()) != null) {
response += line;
}
rd.close();
// 處理服務端的響應值和錯誤
/pre
在開發Android與PHP聯合應用時,我們需要遵循最佳實踐來保證代碼的質量和易用性。上述的技巧和想法僅僅只是巫妙點而已,開發人員需要遵循這些規則來最大程度地提高應用程序的效能。
上一篇php 傳參