私のアプリはX分ごとにチェックする必要があります。画面がオフのときに機能するようにwakeLockを実装する必要がありますが、同時にネットワークを使用するため(メインスレッドで禁止されている)AsyncTaskを使用する必要があります。
.release() が呼び出されることを確認するための良い方法は何ですか?
ブロック PostExecute は常に呼び出されるわけではなく (doInBackground() でエラーが発生した場合)、最終的にメイン スレッドで呼び出されます。
私のアプリはX分ごとにチェックする必要があります。画面がオフのときに機能するようにwakeLockを実装する必要がありますが、同時にネットワークを使用するため(メインスレッドで禁止されている)AsyncTaskを使用する必要があります。
.release() が呼び出されることを確認するための良い方法は何ですか?
ブロック PostExecute は常に呼び出されるわけではなく (doInBackground() でエラーが発生した場合)、最終的にメイン スレッドで呼び出されます。
Google クラウド メッセージングを使用すると、デバイスがサーバー データ フェッチを要求するタイミングと、定義された X 分の期間を使用するタイミングをサーバーから制御できます。モバイル アプリは、更新されたサーバー データに対して最も応答性が高くなり、必要な場合にのみロードするようにサーバーの負荷を減らします。
GCM: はじめに http://developer.android.com/google/gcm/gs.html
GCM を実装すると、サーバーは Send-to-Sync または Messages with Payload をデバイスに送信できます。ここでプロのコンを確認してください(http://developer.android.com/google/gcm/adv.html)
モバイル アプリには、extends GCMBaseIntentService
onMessage の呼び出しを受け取るクラスがあり、ここでサーバー リクエストを作成して通知を発行できます。
@Override
protected void onMessage(Context context, Intent intent) {
try {
conn = (HttpURLConnection) url.openConnection();
conn.setDoOutput(true);
conn.setUseCaches(false);
conn.setFixedLengthStreamingMode(bytes.length);
conn.setRequestMethod("POST");
conn.setRequestProperty("Content-Type",
"application/x-www-form-urlencoded;charset=UTF-8");
// post the request
OutputStream out = conn.getOutputStream();
out.write(bytes);
out.close();
// handle the response
int status = conn.getResponseCode();
...