你必須爲每個服務的一個獲取數據和一個創建不同的線程像這樣
final Handler handlerStartup = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
Change the UI of your activity in handler here
}
};
new Thread() {
public void run() {
callWebService(url);
handlerStartup.sendEmptyMessage(0);
}
}.start();
這樣你就必須創建另一個線程爲您的其他服務中插入數據,如果你試圖改變UI在線程有你面對窗口泄漏故障的問題
OR
有你調用Web服務類,在doBackground方法擴展的AsyncTask您調用Web服務的另一種方式
而且代碼用於檢查網絡連接是下面
public class AppStatus {
private static AppStatus instance = new AppStatus();
ConnectivityManager connectivityManager;
NetworkInfo wifiInfo, mobileInfo;
static Context context;
boolean connected = false;
public static AppStatus getInstance(Context ctx) {
context = ctx;
return instance;
}
public Boolean isOnline(Context con) {
try {
connectivityManager = (ConnectivityManager) con
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = connectivityManager
.getActiveNetworkInfo();
connected = networkInfo != null
&& networkInfo.isAvailable() && networkInfo.isConnected();
return connected;
} catch (Exception e) {
System.out.println("CheckConnectivity Exception: " + e.getMessage());
Log.v("connectivity", e.toString());
}
return connected;
}
}
何地u需要檢查是否有數據連接或不寫
如果(!AppStatus.getInstance(本).isOnline(這本)){
AlertDialog.Builder builder = new AlertDialog.Builder(
LoginActivity.this);
builder.setTitle("No Internet");
builder.setIcon(android.R.drawable.ic_dialog_alert);
builder.setMessage("Can't access Server");
builder.setPositiveButton("ok",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
return;
}
});
AlertDialog diag = builder.create();
diag.show();
Log.v("Home", "############################You are not online!!!!");
}
你在哪裏提到了一段時間後,Web服務將被一次又一次地調用? – 2014-08-26 11:50:09