この週末は久しぶりにパソコンに噛り付いて過ごしてしまった。
土曜日に奥さんが子供連れてお出かけしてたのがそれに拍車をかけて、
金夜から含めると結局20時間くらいコーディングしてたんじゃないだろうか。。。
でも、その甲斐あってandroidでのSQLiteの使い方が結構分かってきた。
後、今までのAppWidgetProviderの使い方があまりよろしくなかった事も判明。
今まではAppWidgetProviderで直接XML取得のhttp通信から、
XMLのパース、ウィジェットの更新まで一連の処理を行っていたんだけど、
そもそも、AppWidgetProviderはBroadcastRecieverを継承したクラスなので、
時間の掛かる処理には向かないのだそうだ。
今まで、Homeに戻るときに不安定だったのはこの辺が原因の様な気がする。
そんなこんなで、CliphWeatherの処理を抜本的に組み替えようとしてます。
現状の問題点は以下の通り。
・起動時、Homeに戻った際等に強制終了する事がある(前回の暫定対応でやや改善)
・朝の気温、降水確率などが昼以降の更新で消えてしまう。
⇒XMLソースに入ってこないから。
・通信状況によって挙動が不安定
⇒通信なし状態は前回暫定対応で改善。途中で切断されるケースではまだ事象再現。
これを改善する為に以下の通り変更しようと取り組み中。
・XMLを取得・パースするのはバックエンドのサービスが担当。
・パース結果はSQLiteのDBに格納
・http通信にタイムアウト制御を追加
・AppWidgetProviderはSQLiteから当日~5日分のデータを取得して
ウィジェットを更新する処理に特化(通信は行わない)
⇒DBに該当データが無い場合は、サービスにデータ更新を依頼(Intent)
この仕組みで一応見かけ上、動作するところまでは辿り着いたんだけど、
今日フィールドテストして見てると以下の問題点が、、、
・回線の弱いところで更新中に強制終了が起こった
・天気情報の差分更新が上手く行っていない
⇒何故か、最高気温の方まで消えてる、、、
やれやれ。
やっぱり、端末上でデバック出来る様に、
ログチェック機能をつけようかな。
でも、あと少しだ!!
今週中にケリつけるぞ!
しかし、こう安定稼動を求められる様になって来ると、
全端末持ってないと厳しくなってくるな。
100円くらい課金したら一発で全機種揃うんだけどな~
払わないよね^^;やっぱり