2014-09-16 3 views
5

Android 애플리케이션에서 Android 서비스로 통신하고 싶습니다. 나는 두 가지 옵션을했지만 내가 선택할 수있는 모르겠어요 응용 프로그램과 통신하기

  1. 는 서비스 응용 프로그램에서 연결하는 LocalBinder를 사용하여 응용 프로그램
  2. 로 서비스를 등록합니다.

용액 1

애플리케이션 :

public class MyApplication extends Application { 

    MyService myService; 

    public void setMyService(MyService myService) { 
     this.myService = myService; 
    } 

    public void testCallService(){ 
     myService.sendResponseApdu("test".getBytes()); 
    } 
} 

및 서비스 :

public class MyService extends HostApduService { 

    @Override 
    public void onCreate() { 
     super.onCreate(); 
     ((MyApplication)getApplication()).setMyService(this); 
    } 

    @Override 
    public byte[] processCommandApdu(byte[] commandApdu, Bundle extras) { 
     return new byte[0]; 
    } 

    @Override 
    public void onDeactivated(int reason) { 

    } 
} 

어플리케이션이 서비스 기준을 사용하여 서비스를 호출한다. 서비스가 로컬 서비스입니다. (원격 서비스 아님) 이 접근 방식은 모든 상황에서 작동합니까?

2 사용하십시오 ServiceConnection로 LocalService를 접근 방식은 서비스에 결합하는 솔루션이 작동합니다 http://developer.android.com/reference/android/app/Service.html#LocalServiceSample

솔루션의 예를 준수합니다. 예제 1도 효과가 있습니까? 솔루션 1과 솔루션 2의 장점은 무엇입니까?

+1

왜 이것을 응용 프로그램으로 확장하고 있습니까? '서비스'와 의사 소통을하기에 좋은 디자인 방식이 아닙니다. – Squonk

+0

우리는 응용 프로그램을 한 번 초기화하여 세션에 대한 참조를 유지하도록 확장합니다. – userM1433372

답변

2

도움이 될 수 있습니다 서비스

4) 활동으로 메시지를 보내기/받기로 메시지를 보내기/받기 백그라운드에서 장기 실행 작업을 수행하기위한 것이고 서비스와 활동간에 상당한 양의 상호 작용이있는 경우 바운드 서비스를 사용하는 것이 좋습니다. 바운드 서비스를 사용하는 이유는 Binding이 통신을위한 풍부한 인터페이스의 장점을 가지고 있기 때문입니다. 내가 인터페이스와 Localbroadcastreceiver를 사용하여 활동 서비스에서 통신 이벤트를 통해 서비스를 제공하는 활동에서 통신과 같은 이유로 바운드 서비스를 선택한 경우

https://stackoverflow.com/a/5066187/2839624

나는 유사한 응용 프로그램 작업을했다.

0

첫 번째 방법의 결합이 더 엄격하기 때문에 두 번째 방법이 나에게 가장 좋은 것처럼 보입니다.

0

바인더를 사용하거나 인터 프로세스 통신의 경우 AIDLS를 항상 사용하는 것이 좋으며 참조를 통해 사용하는 경우 AIDLS를 사용하면 앱이 유출되거나 누락 된 경우 앱이 호황을 누릴 수 있습니다.

+0

해결책 1은 어떤 상황에서 참조 불능이 될까요? – userM1433372

0

을 사용할 수 있습니다 전체 디커플링 사용을 원하는 경우 보안/코드의 복잡성을 걱정할 필요없이 액티비티/프래그먼트/서비스 간의 객체 종류. 코드 유지 및 유지 관리가 쉬워집니다.

희망이 있습니다. 즉를

1) 구현 자신의 안드로이드 배경 서비스

2) 시작과 활동에서 서비스를 중지 :

관련 문제