2013-11-21 1 views
1

에서 활성 개체의 목록을 반환하는 방법을 ...
그래서 나는 인터페이스 IJobController.aidl에서 IJobController이 :
import com.example.jobs.api.IJobExecutionContext; 이러한 정의는 세대 폴더에 컴파일 할 때다른 클라이언트 응용 프로그램에 안드로이드 서비스 응용 프로그램에서 원격으로 일부 인터페이스에 노력하고 AIDL 접근 방식을 사용하여 안드로이드 IPC

interface IJobExecutionContext {  
    Bundle getJobResult(); 
    ... 
    long getJobStartTime(); 
    long getJobEndTime(); 
    long getJobRunTime(); 
} 

, 내가 생성 된 IJobController.java 파일에 다음과 같은 오류를 얻을 : IJobExecutionContext가 자신의 AIDL에 정의되어

interface IJobController { 
    List<IJobExecutionContext> getCurrentlyExecutingJobs(); 
    ... 
} 

Type mismatch: cannot convert from ArrayList<IBinder> to List<IJobExecutionContext> 
The method writeBinderList(List<IBinder>) in the type Parcel is not applicable for the arguments (List<IJobExecutionContext>) 

필자는 이러한 인터페이스를 기본 유형, Parcelable 등과 함께 List (또는 Map)에서 사용할 수 있음을 알고 있습니다. AIDL 인터페이스 만 반환하는 다른 방법에서는 모든 것이 정상이지만 목록 컨테이너에서는 그렇지 않습니다.

원시 목록, 또는 의 IJobExecutionContext 구현 목록을 반환해야합니까? Parcelable?

감사합니다.

답변

0

문제는 바인더가 인터페이스 IJobExecutionContext에 대해 아무 것도 모르고 있기 때문에 처리 방법을 모르는 것입니다. 바인더는 원시 형식 만 마샬링 및 비 정렬 화하는 방법을 알고 있습니다. 다른 경우에는 Parcelable 인터페이스를 구현하는 작업을 수행하는 방법을 설명해야합니다. 따라서 필자는 AIDL 파일의 인터페이스로 작업 할 수 없다는 것을 알고 있습니다. 이 인터페이스를 구현하는 클래스로 IJobExecutionContext을 대체해야합니다. 또한이 클래스는 Parcelable 인터페이스도 구현해야합니다.

관련 문제