アラームマネージャを使用して、後でユーザが指定した時刻にファイルを更新するサービスを呼び出しています。その仕組みはうまく動作します。今私がする必要があるのは、さまざまな時に異なることをする必要がある、さまざまな意図を持つ複数のアラームがあるので、アラームが呼び出すサービスへのパスです。アクティビティからサービスへの情報の受け渡し
私はバンドルでエクストラを渡す方法を理解していますが、サービスでは動作しません。このように何も渡すことはできません。サービスからアクティビティに渡されたものとしてnull
を取得し続けます。
ここに私の活動コードが1つのアラームです。
Intent myIntent = new Intent(this, TimerService.class);
Bundle bundle = new Bundle();
bundle.putString("extraData", "FIRST_ALARM");
myIntent.putExtras(bundle);
PendingIntent AmPendingIntent = PendingIntent.getService(this, 0, myIntent, 0);
AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE);
am.setRepeating(AlarmManager.RTC_WAKEUP, Time2fire, fONCE_PER_DAY, AmPendingIntent);
サービスコード:
super.onStart(intent, startId);
String bundleFromActivity = intent.getStringExtra("extraData");
私は多くのことを検索しましたが、私が見たものは何も働いていません。私は今、そのONSTARTが廃止されて実現し、onstartcommand使用する必要があります私のサービス からの私の活動
Intent intent = new Intent(getApplicationContext(), TimerService.class);
intent.putExtra("someKey", "hifromalarmone");
PendingIntent myIntent = PendingIntent.getService(getApplicationContext(),0,intent, 0);
AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE);
am.setRepeating(AlarmManager.RTC_WAKEUP, Time2fire, fONCE_PER_DAY, myIntent);
から :OK
は今、私はこれにそれを変更しました。
public int onStartCommand(Intent intent, int startId, int flags)
{
super.onStartCommand(intent, flags, startId);
Bundle extras = intent.getExtras();
String data1 = extras.getString("somekey");// intent.getStringExtra("someKey");
return START_STICKY;
}
となり、まだ何かが...返されます。何が私はここで行方不明ですか?右に何かを渡していないように見えます。
私はそれを理解しました...多くの掘り出しと少しの幸運の後、自分の意図の中のデータを更新するだけでは、私の元の意図が既にシステムに登録されていたため、十分ではありませんでした。このように、私の新しい合格データは更新されませんでした。ここにキーがありました。(誰かが便利だと願っています) 次のコード行は更新する必要があります。 PendingIntent AmPendingINtent = PendingIntent.getService(this、0、myIntent、0); システムに最後に登録されてから最後の0を別のものに更新すると、意図を強制的に更新してバンドルに渡します。
PendingIntent AmPendingINtent = PendingIntent.getService(this、0、myIntent、654654); //このようなものです。あなたの最初のシナリオでは
は、Androidのために、このJavaですか?いくつかの適切なタグの恩恵を受けるかもしれません。 – joshp
が正しい。私はこの感謝のためにいくつかの他のタグを追加しました! – FirmwareEngineer
ここで私のチュートリアルをチェックしたいと思うかもしれません:http://blog.blundell-apps.com/notification-for-a-user-chosen-time/私はブール値を余分にintentに送った – Blundell