すべての電話で正常に動作する Android アプリを作成しました。しかし、私のアルカテル電話では、電話がディープスリープモードになり、データネットワークに障害が発生したため、アプリはデータネットワークを取得せず、サーバーからデータを同期しません。
私のデザイン ...
SystemBootReceiver
--> (DataSyncService)Service
--> (MyBroadcastReceiver)BroadcastReceiver
--> (MyDataService)Service
.
したがって、ここでシステムの起動時に、 (繰り返し)DataSyncService
を設定したところから開始し、 . を呼び出した後、 を呼び出して停止します。AlarmManager
MyBroadcastRecever
BroadcastRecever
DataSyncService
stopself()
これで、MyBroadcastRecever
が を呼び出しますMyDataService
。
前述のように、電話がディープスリープモードになるのを防ぐWakeLocksに出くわしました。だから私はそれをMyDataService
onCreate()
メソッド 内に実装しました
PowerManager pm = (PowerManager)
getSystemService(Context.POWER_SERVICE);
mWakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "My Tag");
mWakeLock.acquire();
そしてrelease()
、サービス停止前のウェイクロック。
Androidマニフェストにも許可を設定しました。
しかし、これはうまくいきませんでした。簡単なチェックのために、市場のWAKE LOCKアプリを使用しました。
しかし、これでも電話は起きませんでした。再び私はWAKE MY ANDROID(ストアから削除されたアプリ)アプリを市場から見つけてインストールしました..そしてここで魔法が起こりました.
それは電話を生かし続けました。
このアプリの説明によると、Wake Lock
. それで、私は何が欠けていますか?
実装ミスや設計上の問題はありますか?