【发布时间】:2015-01-13 20:52:12
【问题描述】:
我正在尝试使用PendingIntent 从Service 触发onActivityResult 方法。
一切正常:后台线程完美运行,PendingIntent 将Intent 对象发送到Fragment,但它没有运行onActivityResult 方法。
这是我创建Service 的代码:
Intent i = new Intent(getActivity(), UpdaterService.class);
Intent ei = new Intent();
PendingIntent pi = getActivity().createPendingResult(TASK_CODE_UPDATE, ei, 0);
onActivityResult:
public void onActivityResult(int requestCode, int resultCode, Intent data){
super.onActivityResult(requestCode, resultCode, data);
Log.d(TAG, "Result get");
if(resultCode == RESULT_START){
switch(requestCode){
case TASK_CODE_UPDATE:
lessonTextView.setText(data.getStringExtra(UpdaterService.EXTRA_LESSON_VIEW_TEXT));
futureTextView.setText(data.getStringExtra(UpdaterService.EXTRA_FUTURE_VIEW_TEXT));
break;
}
}
}
服务发送代码:
Intent i = new Intent()
.putExtra(EXTRA_LESSON_VIEW_TEXT, lessonViewText)
.putExtra(EXTRA_FUTURE_VIEW_TEXT, futureViewText);
try {
pi.send(UpdaterService.this, HelperFragment.RESULT_START, i);
Log.d(TAG, "Sending intent");
} catch (CanceledException e) {
e.printStackTrace();
Log.e(TAG, "Error sending intent");
}
【问题讨论】:
-
我不知道
createPendingResult()方法,所以我无法评论它为什么不起作用,但您可能应该改用 binding。 -
要将信息从您的
Service发送回您的Activity,您可以使用带有回调接口的绑定服务,也可以将结果作为广播发送Intent(使用@987654337 @) 并让您的Activity注册BroadcastReceiver以获得结果。
标签: android android-intent android-fragments service android-pendingintent