1

ユーザーが設定した特定の時間にポップアップ メッセージを表示するアプリケーションを開発する必要があります。

サービスを開始する android AlarmManager を使用します。そのサービスは、[OK] ボタンでポップアップ インターフェイスを含むアクティビティを開始します。

そのアクティビティにデータを渡したいのですが、どうすればできますか (そうしないと、データベースにクエリを実行する必要があります)?

  • AlarmManagerを使用して開始時間を設定しながら、アクティビティからサービスにデータを渡す方法は?
  • サービスによって開始されたアクティビティにそのデータを後で渡す方法は?

また、サービスが (メインのアクティビティではなく) アプリケーションでアクティビティを開始し、データベース ハンドラー関数が別のクラスにある場合、データベースにアクセスできますか?

4

1 に答える 1

3

PendingIntent オブジェクトを AlarmManager.set メソッドに渡すと、保留中のインテントにラップされた Intent オブジェクトに必要なエクストラを配置できます。例えば:

Intent intent = new Intent(getApplicationContext(), YourService.class);
intent.putExtra("someKey", someData);
intent.putExtra("anotherKey", anotherData);
PendingIntent pi = PendingIntent.getService(getApplicationContext(), REQUEST_CODE, intent, FLAGS);
alarmManager.set....

そして、サービスが開始されると、同じインテント オブジェクトを受け取ります。

public void onStartCommand(Intent data, int startId, int flags) {
    int data1 = data.getExtra("someKey");
}

また、サービスからアクティビティを開始するときにも同じことができます。

Intent activityIntent = new Intent(getApplicationContext(), YourActivity.class);
intent.putExtra("key", data1);

実際、サービスで特別なことを何もせず、アクティビティを開始する場合、アラームでアクティビティのインテントを設定しないのはなぜでしょうか?

于 2011-11-04T14:51:56.107 に答える