2

私の意図は、数分ごとに Android フォンの動きを追跡し、それをサーバーに送信するアプリケーションを作成することです。サービス、AlarmManager、およびPartial_WakeLockを使用してそれを行う方法について、オンラインで多くのことを読みました。私は github.com の commonsware の例も調べましたが、まだ Android の経験がないので少し混乱しました。

アプリケーションを [場所を取得してサーバーに送信] することに成功しました。数分ごとにサービスをウェイクアップして[言及された作業]を行うにはどうすればよいですか? コモンズウェアの Wakeful の例では、どのメソッドで自分の [作業] に言及し、どのメソッドでそれを呼び出し続けますか?

4

2 に答える 2

7

Serviceとが必要ですAlarmManager。サービスは、位置の取得とサーバーへの投稿を処理し、AlarmManager決定した間隔に基づいてサービスを呼び出します。AlarmManager は、Service大まかに次のように、onCreateまたは必要な他の場所で初期化する必要があります。

AlarmManager alarmMgr = (AlarmManager) this.getSystemService(Context.ALARM_SERVICE);
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, new Intent(this, YourAlarmReceiver.class),PendingIntent.FLAG_CANCEL_CURRENT);

// Use inexact repeating which is easier on battery (system can phase events and not wake at exact times)
alarmMgr.setInexactRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, YOUR_ALARM_TRIGGER_AT_TIME,YOUR_ALARM_INTERVAL, pendingIntent);

YourAlarmReceiver がサービスを開始します

public class YourAlarmReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
          context.startService(new Intent(context, YourService.class));
    }
}

サービスの使用方法については、Android Web サイトhttp://developer.android.com/guide/topics/fundamentals/services.htmlを参照してください。

于 2012-02-12T00:11:58.903 に答える
0

sleep(x) が解決されると、システムは次のコード行を呼び出す sleep(X) で部分的な wakeLock を使用できますが、問題は、タスクの強制終了アクションが必要な無限サイクルが発生する可能性があることです。または単にシステムをクラッシュさせます。

于 2012-02-12T00:00:15.543 に答える