1

私の Android アプリでは、 からデータを取得しlocalStorageて表示していlistviewます。アプリが閉じられていても、Web サービスから更新されたデータを取得したいと考えています。

を使用してwebchromeclientいます。サービスを試してみましたが、アプリでのみ開始されlocalStorage、アプリが閉じられているか破棄されているときに操作できず、アラームでサービスをトリガーしようとしました

コード:

@Override
public void onReceive(Context context, Intent intent) {
WakefulIntentService.acquireStaticLock(context);
    context.startService(new Intent(context, AppService.class));
}
4

1 に答える 1

2

たとえば、3 秒ごとにサービスを実行する必要がある場合は、以下のコードを使用します。

Calendar cal = Calendar.getInstance();
Intent intent = new Intent(this, LockService.class);
PendingIntent pintent = PendingIntent.getService(this, 0, intent, 0);
AlarmManager alarm = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
alarm.setRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), 3*1000, pintent);

次のコードのように、電話機の再起動時に BroadcastReceiver が必要です。

public class MyScheduleReceiver extends BroadcastReceiver {

  private static final long REPEAT_TIME = 1000 * 60;

  @Override
  public void onReceive(Context context, Intent intent) {
    AlarmManager service = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
    Intent i = new Intent(context, MyStartServiceReceiver.class);
    PendingIntent pending = PendingIntent.getBroadcast(context, 0, i,
        PendingIntent.FLAG_CANCEL_CURRENT);
    Calendar cal = Calendar.getInstance();

    cal.add(Calendar.SECOND, 60);

    service.setInexactRepeating(AlarmManager.RTC_WAKEUP,
    cal.getTimeInMillis(), REPEAT_TIME, pending);

  }
} 

およびヘルプ クラス:

public class MyStartServiceReceiver extends BroadcastReceiver {

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

そして許可が必要

マニフェストで service と BroadcastReceiver を定義します

于 2014-10-11T07:00:23.150 に答える