我正在尝试使用onActivityResult
从Service
触发PendingIntent
方法。
一切顺利:后台线程完美运行,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");
}
答案 0 :(得分:1)
这不是Intent
对结果的正确使用。仅在从startActivityForResult()
调用Activity
到另一个Service
时使用。在您致电pi.send()
时startActivity()
,您实际上正在使用PendingIntent
的内容{{1}}。
答案 1 :(得分:0)
使用PendingIntent
中的createPendingResult()
将信息从服务传递到活动工作 - 当服务调用pendingIntent.send()
时,将调用活动的onActivityResult()
方法。但是,有一些警告:
onActivityResult()
回调 - 接收结果必须直接在活动中处理。onActivityResult()
方法 - 而是来自所有{的数据{1}}来电将排队,当活动再次启动时,它会立即收到所有排队的pendingIntent.send()
来电。