Android에서 현재 가장 위에있는 활동 이름을 가져오고 싶습니다. ActivityManager.getRunningTasks(1);
과 같은 메소드는 지원되지 않으며 사용자가 AccessibilityService
을 사용하도록 설정해야합니다. 그래서 나는 RxJava을 통해 이것을 결정했다. 기본적으로 Subject를 보유 할 Singleton 클래스가 하나 있습니다. 활동 재개시 및 활동 일시 중지시이 제목을 업데이트합니다. 또한 배경 서비스에서이 Subject를 구독하여 현재 실행중인 활동을 가져옵니다.Android, RxJava를 사용하여 현재 활동 가져 오기
제 질문은 백그라운드 작업에서 현재 활동 이름을 동기식으로 가져와야하는 방법입니다.
제목 홀더 싱글 클래스 ActivityTracker.class
public class ActivityTracker {
private static ActivityTracker instance;
public static synchronized ActivityTracker getInstance() {
if (instance == null) {
instance = new ActivityTracker();
}
return instance;
}
public PublishSubject<String> currentActivity = PublishSubject.create();
}
VideoPlayerActivity.class
ActivityTracker.getInstance().currentActivity
.onNext(VideoPlayerActivity.class.getSimpleName());
ActivityTracker에서 다음과 같이 BehaviorSubject를 사용해 보았습니다 : public BehaviorSubject currentActivitySubject = BehaviorSubject.create(); public Observable getActivityName() { return currentActivitySubject.asObservable(); }'. 하지만 아무 것도 반환하지 않는다면, 코드는'getActivityName'을 얻으려고 한 후에 작동을 멈춘다. –
나의'currentActivitySubject'는 비어 있는데, 그의 첫 번째'onNext'를 아직 얻지 못하고있다. 이 사건을 어떻게 처리 할 수 있습니까? –
음, 시작 활동을 알았습니다. 그것은 귀하의 목록에 선언되어 있습니다. 생성 이름에서 이름을 주제로 전달할 수 있습니다. 예 : public'BehaviorSubject currentActivitySubject = BehaviorSubject.create (SplashActivity.class.getSimpleName());', 여기서 Subject는 'ActivityTracker'의 구성원입니다. –
Blackbelt