Как отправить данные в ActivityRecognition Intent Service без замены данных об активности?
Я работаю над приложением отслеживания активности пользователей.
Я использовал API распознавания активности для отслеживания активности пользователя.
Я настроил службу Intent для вызова активности пользователя через указанный интервал, например, каждые 20 секунд.
Ниже приведен мой класс обслуживания для целей распознавания активности:
/**
* Called when a new activity detection update is available.
*/
@Override
protected void onHandleIntent(Intent intent) {
// mPId = intent.getStringExtra("PID");
--- Когда я отправляю некоторые данные, добавив дополнительные данные вместе с ожидающим намерением, я не получаю данные о намерениях пользователя. Данные о намерениях пользователя заменяются моими данными
// If the intent contains an result data
if (ActivityRecognitionResult.hasResult(intent)) {
// Get the update
ActivityRecognitionResult result = ActivityRecognitionResult
.extractResult(intent);
// Log the update
saveActivityRecognitionResult(result);
}
}
Приведенный выше код работает нормально, если я не передал никаких собственных данных.
Я хочу отправить некоторые данные вместе с этим намерением. Я установил эти данные вместе с ожидающим намерением. Но если я установлю данные, я получу только те данные, а не данные о намерениях пользователя.
Я не хочу использовать общее предпочтение, чтобы хранить и извлекать его внутри службы намерений, не получится.
Пожалуйста, помогите мне решить эту проблему.
1 ответ
Я бы не стал передавать это намерение дальше, но взял бы данные в вашем onHandleIntent
и добавить его к другому намерению.
Я предполагаю, что вы пытаетесь передать это намерение какой-то службе, которая хранит данные об активности в sqlite или что-то еще... есть подвох.
Не использовать IntentService
потому что до или во время выполнения своей работы телефон может заснуть, если вы не приобретете WakeLock
, Познакомьтесь с WakefulBroadcastReceiver, чтобы разобраться с ним.
Другое решение состоит в том, чтобы просто использовать BroadcastReceiver
как гарантированно телефон не заснет.