我有两个活动A
和B
。我需要从A
. 该服务将执行一些操作。我需要在活动中使用服务中的一些数据B
。我怎样才能做到这一点。请用示例代码解释这一点。
问问题
5292 次
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 回答