編輯:關於Android編程
谷歌在4.0系統以後就禁止在主線程中進行網絡訪問了,原因是:
主線程是負責UI的響應,如果在主線程進行網絡訪問,超過5秒的話就會引發強制關閉,所以這種耗時的操作不能放在主線程裡。放在子線程裡,而子線程裡是不能對主線程的UI進行改變的,因此就引出了Handler,主線程裡定義Handler,子線程裡使用。
主線程的Handler定義:
Handler loginHandler = new Handler() {
public void handleMessage(Message msg) {
isNetError = msg.getData().getBoolean("isNetError");
System.out.println(isNetError);
if (proDialog != null) {
proDialog.dismiss();
}
if (isNetError) {
Toast.makeText(LoginActivity.this, "登陸失敗:\n1.請檢查您網絡連接.\n2.請聯系我們!",
Toast.LENGTH_LONG).show();
}
// 用戶名和密碼錯誤
else {
Toast.makeText(LoginActivity.this, noticeMsg,
Toast.LENGTH_LONG).show();
// 清除以前的SharePreferences密碼
clearSharePassword();
}
}
};主線程裡進行登錄時候的子線程:
// 開一個線程進行登錄驗證,主要是用於失敗,成功直接通過startAcitivity(Intent)轉向 Thread loginThread = new Thread(new LoginFailureHandler()); loginThread.start();
/**
* 登錄處理函數
* @author wangfeng
* @date 2013-12-19 09:25:42
*
*/
class LoginFailureHandler implements Runnable {
@Override
public void run() {
/*userName = userNameEdit.getText().toString();
password = loginPasswordEdit.getText().toString();*/
//驗證地址
String validateURL=url+"/login";
boolean loginState = validateLocalLogin(userNameEdit.getText().toString(), loginPasswordEdit.getText().toString(),
validateURL);
Log.d(this.toString(), "validateLogin");
// 登陸成功
//測試---開始
loginState = true;
//---測試結束
if (loginState) {
// 需要傳輸數據到登陸後的界面,
Intent intent = new Intent();
intent.setClass(LoginActivity.this, ListViewActivity.class);
Bundle bundle = new Bundle();
/*bundle.putString("MAP_USERNAME", userNameEdit.getText().toString());
intent.putExtras(bundle);*/
// 轉向登陸後的頁面
proDialog.dismiss();
startActivity(intent);
} else {
// 通過調用handler來通知UI主線程更新UI,
Message message = new Message();
Bundle bundle = new Bundle();
bundle.putBoolean("isNetError", isNetError);
message.setData(bundle);
loginHandler.sendMessage(message);
}
}
}通過messgae.setData方法吧Budle帶進去,然後通過Handler.sendMessage把message放進去.在Handler的handlerMessage中處理。
初識Servlet生命周期及核心API
Servlet概述首先得知道,Servlet=Server+Applet,Servlet主要用於處理各種業務邏輯,它比JSP更具有業務邏輯層的意義。最初的JSP開發模式為
Android 網絡開源庫之-retrofit
前言當前的網絡開源庫有許多,如volley,okhttp,retrofit等,這三個庫當前是比較火的,其中,okhttp和retrofit由square團隊開發。關於這
一起學android之磨刀不誤砍柴工(6)
菜單包括選項菜單(OptionMenu)、上下文菜單(ContextMenu)、子菜單(SubMenu). 創建子菜單(SubMenu)的步驟: 1、重寫Activity
Android_GestureDetector手勢滑動使用
Gesture在 ViewGroup中使用GestureDetector類可以讓我們快速的處理手勢事件,如點擊,滑動等。使用GestureDetector分三步:1. 定