0
我在我的項目中工作,它有一個SQLLIT並與SQL-server
交互。在我的服務器中,我想知道:如何創建一個服務來監聽我的sqllite
表,並檢查任何表中是否有新記錄?它使用ksoap2將此記錄傳遞給服務器。如何在連接到服務器時使用KSOAP2的後臺服務?
另外我需要讓我的服務首先檢查是否有網絡可用或不可用。
我在我的項目中工作,它有一個SQLLIT並與SQL-server
交互。在我的服務器中,我想知道:如何創建一個服務來監聽我的sqllite
表,並檢查任何表中是否有新記錄?它使用ksoap2將此記錄傳遞給服務器。如何在連接到服務器時使用KSOAP2的後臺服務?
另外我需要讓我的服務首先檢查是否有網絡可用或不可用。
我相信你的SQLite表從一個活動改變(某種程度上需要某種用戶交互)。所以我建議以下方法:
一些聽衆,被稱爲每當表上執行任何CRUD操作創建一個SQLite表中。
public class YourSqliteTable {
private TableListener listener;
public void insert(Object urData){
//insert data here to sqlite table
// call the listener
listener.onInsert(urData);
}
}
public interface TableListener{
public void onInsert(Object tableRow);
}
2.創建一個處理SOAP消息並監聽SQLite表一個服務:
public class SoapService extend Service implements TableListener{
private HanlderThread soapThread;
private Handler soapHandler;
public void onCreate(){
soapThread = new HandlerThread("handler_thread");
soapThread.start();
soapHandler = new Handler(soapThread.getLooper){
public void handleMessage(Message msg) {
switch(msg.what){
case(1)://send data to server
HttpTransportSE transporter = new HttpTransportSE(Server.TIGA_SERVER_IP
+ SOAP_URL);
SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
SoapSerializationEnvelope sEnv = new SoapSerializationEnvelope(SoapEnvelope.VER11);
try {
request.addProperty("data", msg.obj);
sEnv.dotNet = true;
sEnv.setOutputSoapObject(request);
transporter.call(NAMESPACE + METHOD_NAME, sEnv);
SoapObject response = (SoapObject) sEnv.getResponse();
return response.toString();
} catch (Exception e) {
e.printStackTrace();
} finally{
transporter.reset();
}
break;
}
}
}
@Override
public void onInsert(Object tableRow){
Message msg = new Message();
msg.what = 1;
msg.obj = tableRow;
soapHandler.sendMessage(msg);
}
}
綁定用戶活動到SoapService並建立綁定時(onServiceConnected是稱爲)將該服務註冊爲SQLite表的偵聽器。
檢查,如果Internet連接可用是可以做到:
公共布爾isNetworkOn(){
ConnectivityManager conMan = (ConnectivityManager)
getSystemService(CONNECTIVITY_SERVICE);
NetworkInfo activeNet = conMan.getActiveNetworkInfo();
if(activeNet == null)
return false;
if(activeNet.isAvailable() && activeNet.isConnected())
return true;
return false;
}
對不起,我遲到,我會做什麼ü做,如果我會告訴ü我有任何的觀點 – user3806961