と の 2 つの活動がA
ありB
ます。からサービスを開始する必要がありますA
。サービスはいくつかのアクションを実行します。activity でサービスのデータを使用する必要がありますB
。これどうやってするの。これをサンプルコードで説明してください。
3 に答える
StartService メソッドのインテントを介してデータを送信できます。
私のサービスからのこのコード(StartServiceメソッド)
Intent updater = new Intent();
updater.setAction(AppWidgetManager.ACTION_APPWIDGET_UPDATE);
updater.putExtra("betHour", pref.getInt("Hr", exampleHour));
updater.putExtra("betMin", pref.getInt("Mn", exampleMinute));
PendingIntent pen =
PendingIntent.getBroadcast(getApplicationContext(), 0, updater, PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager alarmManager =
(AlarmManager) getApplicationContext().getSystemService(Context.ALARM_SERVICE);
alarmManager.setRepeating(AlarmManager.ELAPSED_REALTIME, SystemClock.elapsedRealtime() + 1000, 60000, pen);
1 つの方法は、ResultReceiver
Bundle を使用して Service から Activity にデータを送信するために使用することです。たとえば、私のブログ投稿をご覧here
ください。もう 1 つの方法は、BroadCastReceiver を使用することです。アクティビティでデータを受信したいときに、BroadCast を登録して、BroadCast を起動できます。
Well, there is quite a lot of ways to do it.
Here is one easy way: You can use Broadcast to send messages like this:
Intent i = new Intent();
i.setAction("broadcastName");
//You can put extras here.
context.sendBroadcast(i);
And than you will need a broadcast receavier at your Activity:
private static class UpdateReceiver extends BroadcastReceiver {
ListSmartsActivity reference;
@Override
public void onReceive(Context context, Intent intent) {
//You do here like usual using intent
intent.getExtras(); //
}
}
-- edit -- Sorry forget to mention that you need to register the your broacast, just doing this:
updateReceiver = new UpdateReceiver();
registerReceiver(updateReceiver, new IntentFilter("broadcastName"));
You can send as many broadcast as you need, and register as many receiver as well.