2017-11-24 16 views
1

나는 그가 산책 실행 또는 등 자전거 여부를 사용자의 활동 데이터를 얻기 위해 ActivityRecognitionClient 클래스와 함께 일하고 있어요에안드로이드 - ... 다시 MainActivity

일을 ActivityRecognition 서비스 값을 가져입니다 PendingIntent 작업, 그래서 PendingIntent을 시작할 수 있고, onHandleIntent 함수에서 사용자의 활동 값 로그를 추출 할 수도 있습니다.

문제는 MainActivity에 값을 추출 할 수 없다는 것입니다.

나는 해결책을 보았지만 here.

그는 MainActivity에서 SharedPreferences.OnSharedPreferenceChangeListener을 구현합니다. 따라서 SharedPreferenceIntentService또는 다른 클래스에서 편집 될 때마다 MainActivity은 콜백을받습니다.

나는 이것이 최선의 해결책이라고 생각하지 않지만 다른 해결책을 찾지 못했습니다.

하지만 이해할 수없는 것은 OnSuccessListenerOnFailureListener을 제외한 PendingIntent.getService() 함수에 대한 콜백이없는 이유입니다.

지금 this gist

도우미에 대한 감사가 될 때까지 내가 무슨 짓을했는지!

답변

1

서비스에서 활동으로 데이터를 가져 오려면 인 텐트, 로컬 브로드 캐스트 수신기를 사용하거나 활동을 서비스에 바인딩 할 수 있습니다. 서비스에 바인딩하는 경우 예를 들어 콜백을 등록 할 수 있지만 서비스 백그라운드 스레드에서 뷰를 업데이트하지 않도록주의하십시오 (예 : 핸들러를 사용하여 백그라운드 스레드에서 UI 스레드로 통신)

+0

TL DR - 서비스 바인드 – Vaiden