我在使用从一项服务提供到另一项服务时遇到intent.putExtra
问题ResultReceiver
。不使用putExtra
我的意图处理程序会给我定期的结果,但是当它被包含时,除了它添加的值之外它找不到任何东西。
没有3 个条目中putExtra
的mExtras->mMap->table
[0]com.google.android.location.internal.EXTRA_RELEASE_VERSION
和 [2] com.google.android.location.internal.EXTRA_ACTIVITY_RESULT
。当我putExtra
在我的代码中包含 时,我的唯一条目mExtras->mMap->table
是 [2] 的RESULT_RECEIVER
.
IntentService 处理程序
protected void onHandleIntent(Intent intent) {
if (ActivityRecognitionResult.hasResult(intent)) {
ActivityRecognitionResult result = ActivityRecognitionResult.extractResult(intent);
DetectedActivity activity = result.getMostProbableActivity();
ResultReceiver receiver = intent.getParcelableExtra(ActivityRecognitionService.RESULT_RECEIVER);
Bundle bundle = new Bundle();
bundle.putParcelable("activity", activity);
receiver.send(CODE, bundle);*/
}
}
ActivityRecognitionService.ACTIVITY = activity;
是我目前获取数据的方式。这是 Android 开发人员页面上提到的数据传输的可能性之一,但我觉得使用ResultReceiver
或其他回调系统更简洁。
拥有意图的类,ActivityRecognitionService
(这也恰好是一个绑定到一个活动的服务,供参考)
请注意,创建和连接activityClient
是在onCreate()
static final String RESULT_RECEIVER = "com.example.myApp.RESULT_RECEIVER";
void onConnected(Bundle connectionHint) {
Intent intent = new Intent(ActivityRecognitionService.this, ActivityRecognitionIntentService.class);
intent.putExtra(ActivityRecognitionService.RESULT_RECEIVER, resultReceiver);
PendingIntent callbackIntent = PendingIntent.getService(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
activityClient.requestActivityUpdates(DETECTION_INTERVAL, callbackIntent);
}
我没有收到任何错误,只是在包含hasResult(intent)
时找不到任何结果putExtra
。