4

我有两个活动AB。我需要从A. 该服务将执行一些操作。我需要在活动中使用服务中的一些数据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

一种方法是ResultReceiver使用 Bundle 将数据从 Service 发送到 Activity。例如,您可以查看我的博客文章here。另一种方法是使用 BroadCastReceiver。当您想在您的活动中接收数据时,您可以注册您的广播并启动广播。

于 2012-08-07T12:01:41.960 回答
1

好吧,有很多方法可以做到这一点。

这是一种简单的方法:您可以使用广播来发送这样的消息:

Intent i = new Intent();
i.setAction("broadcastName");
//You can put extras here.
context.sendBroadcast(i);

而且,您将需要在您的活动中使用广播接收器:

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(); //
        }
    }

-- 编辑 -- 抱歉忘记提及您需要注册您的广播,只需这样做:

updateReceiver = new UpdateReceiver();
registerReceiver(updateReceiver, new IntentFilter("broadcastName"));

您可以根据需要发送尽可能多的广播,也可以注册尽可能多的接收器。

于 2012-08-07T12:04:58.430 回答