2016-07-25 3 views
0

여러 액티비티를 사용하는 Android 앱을 만들고 하나의 소켓을 만들려고합니다. 서버에 연결될 소켓이 포함될 Service을 사용해야한다는 것을 이해했습니다. 모든 Activity은 서버에 대한 특정 요청을 사용합니다 (예 : 첫 번째 활동은 사용자를로드하고 두 번째 활동은 메시지를 보낼 수 있음). 그러면 서버간에 응답 (예 : 사용자 목록이 첫 번째 Activity으로 전달되고 메시지가 두 번째 Activity에로드 됨) 사이를 탐색 할 수 있습니까?다른 액티비티의 서버에서 다른 응답을 전달하십시오.

답변

2

당신은 당신이 LocalBroadcast 화재 및 LocalBrodcast

동적 BroadcastReceiver

참조 자습서를 사용하여 활동에 그 수신하면 응답의 유형에 따라 응답을 처리 할 수있는 데이터를받은 후, 서버에서 데이터를로드 Service를 사용하고 말하는 것처럼

+0

감사합니다.이 솔루션을 확인 하겠지만이를 명확히하고 싶습니다. 소켓 서비스를 저장합니다. 응용 프로그램의 인스턴스와 바인딩됩니다. 모든 액티비티는 응용 프로그램에서 get get 메서드를 호출하여 서비스를 반환합니다. 그러나 내 활동이 바인딩되기 전에 서비스를 요청하면 어떻게됩니까? 어떻게 방지 할 수 있습니까? 그리고 아마도 당신은이 일을 더 잘하는 방법을 조언 할 수 있습니까? –

+0

그러나 내 활동이 바인딩되기 전에 서비스를 요청하면 어떻게됩니까? 정확히 무슨 말을하려는 건지 이해가 안 되니? –

+0

서비스가 바인딩되기 전에 내 Activity가 서비스중인 메소드를 호출하려고 할 것입니다. 예 : 응용 프로그램 및 응용 프로그램 시작 후 응용 프로그램을 시작합니다 : onCreate() 나는 bindService() Activity :: onCreate()있는'service = ((AppCore) this.getApplication()). getService();'하지만 서비스가 아직 묶여 있지 않다면 나는'service'에서 null을 얻을 것입니다. –

0

귀하의 서비스는 귀하의 활동을위한 라우터가 될 수 있습니다. 특정 응답 (스위치 케이스 ID에 맵핑)에 의해 적절한 활동이 시작됩니다. 시작 활동은 채팅을 위해 서비스에 바인딩 할 수 있습니다.

+0

그리고 Activity 인스턴스가 이미 존재한다면? –

+0

인 텐트 플래그로 실행 ex. [FLAG_ACTIVITY_REORDER_TO_FRONT] (https://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_REORDER_TO_FRONT) –

관련 문제