4

と の 2 つの活動がAありBます。からサービスを開始する必要がありますA。サービスはいくつかのアクションを実行します。activity でサービスのデータを使用する必要がありますB。これどうやってするの。これをサンプルコードで説明してください。

4

3 に答える 3

1

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);
于 2012-08-07T12:00:28.953 に答える
1

1 つの方法は、ResultReceiverBundle を使用して Service から Activity にデータを送信するために使用することです。たとえば、私のブログ投稿をご覧hereください。もう 1 つの方法は、BroadCastReceiver を使用することです。アクティビティでデータを受信したいときに、BroadCast を登録して、BroadCast を起動できます。

于 2012-08-07T12:01:41.960 に答える
1

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.

于 2012-08-07T12:04:58.430 に答える