josn資料解析,建立定時服務 天氣預報demo

2021-07-10 22:52:37 字數 2792 閱讀 3312

基本流程:根據中國天氣網伺服器返回的資料,解析後存入資料庫,先在資料庫查詢,如果沒有在伺服器查詢將查詢結果存入資料庫,在進行一次資料庫查詢。

資料庫方面

資料庫建立: 單例模式,根據建表語句確定建立的例項需要哪些資料,存入資料庫的資訊例項化。自行建立乙個(資料庫類)該類中寫對資料庫資料的操作。

如圖:

另外資料庫,資料型別最好是整型,字串轉整型可以用integer.parseint()方法。

監測字串是否為空 textutils.isempty(code).

資料庫操作語句的正確性判斷:

1.可以在adb shell

2.cd  data/data/com~~~~~~~~~~~/databases

3.sqlite3 資料庫名

4.輸入語句進行正確性的監測。 

資料解析方面

伺服器資料解析:將response從伺服器獲取後,建立乙個方法對資料進行解析(通常這個方法寫在獲取網路資訊的介面這樣就可以根據情況編寫不同的解析方式),可以是正規表示式,也可以是json解析。通常解析下來的資料直接存到資料庫中。

正規表示式:

public void handleservicecountry(string response,string city_id)}}

json:

//解析josn資料。

public void handleweathermasege(string masege)

catch (exception e)

}

josn 當傳送josn訊息遇到]} 情況時:

jsonobjectall=new jsonobject();

jsonobject=new jsonobject();

jsonobjectall.put("name",key);

jsonobjectall.put("ctrl",jsonobject);

jsonobject.put("0",a);

gsonfomat + gson 一秒鐘解析json資料。。。。。。。。。。。

其他方面

載入資訊的順序:定義標記,通過對標記的不斷改變和判斷,按照正確的邏輯對資訊載入!!

返回鍵:onbackpressed()重寫這個方法,同樣可以根據標記決定返回到**

public void onbackpressed()
另外注意在子執行緒中是無法立刻對主線程進行ui更新的,不能主動更新ui

可以使用這個方式:

runonuithread(new runnable() 

});

定時後台更新開啟服務→執行服務(設定定時任務傳送廣播)→廣播接收者(開啟服務)

如此迴圈則在服務中的任務就會的到定時的執行

服務:

public class autoupdataservice extends service 

@override

public ibinder onbind(intent intent)

@override

public int onstartcommand(intent intent, int flags, int startid)

}).start();

//獲取系統定時服務,設定執行的時間間隔,定時器需要這個引數

alarmmanager manager= (alarmmanager) getsystemservice(alarm_service);

int anhour= 30*1000;

long triggerattime= systemclock.elapsedrealtime()+anhour;

intent i=new intent(this,autoupdatarecieve.class);

//pendingintent 可以看作是對intent的包裝,通常通過getactivity,getbroadcast ,getservice來得到pendingintent的例項.

pendingintent pi=pendingintent.getbroadcast(this,0,i,0);

//alarmmanager需要乙個pendingintent去定時執行

manager.set(alarmmanager.elapsed_realtime_wakeup,triggerattime,pi);

//第乙個引數是喚醒cup的型別,二參是延時多長時間,三參是即將執行的意圖(pendingintent)

return super.onstartcommand(intent, flags, startid);}}

需要注意的是定時器!! 定時器需要乙個即將執行的意圖(把傳送廣播的意圖包裝成pendingintent)和乙個執行時間,作為引數。

上面程式每隔30秒就會傳送乙個廣播

廣播:

//這個廣播接收用於開啟服務

public class autoupdatarecieve extends broadcastreceiver

}

最後在主程式中只要開啟一次服務就可以定時的後台執行了。即時程式關閉了。





C C 解析josn格式的資料檔案

自己使用時可以只需要其中的cjson.c和cjson.h即可 這裡需要使用乙個很重的要json結構體 typedef struct cjson cjson 說明 1 cjson是使用鍊錶來儲存資料的。2 type是鍵 key 的型別,一共有7種取值,分別是 false,ture,null,numbe...

Spring Boot定時器建立及使用解析

建立定時器 因為專案需要定時在後端執行任務重新整理資料,不需要從前端呼叫介面,所以需要使用定時器。基於註解方式 scheduled預設為單執行緒。12 3456 78910 1112 1314 1516 1718 1920 2122 23package com.ruanshuai.demo.util...

C 建立系統服務並定時執行

c 建立系統服務並定時執行 1.新建專案 windows 服務 2.service1.cs view plaincopy to clipboardprint?using system using system.collections.generic using system.componentmod...