2014-10-21 4 views
0

내 Android 앱은 여러 번 실행되어 트리와 같은 구조로 이동하는 활동을 포함합니다. 이 구조의 모든 활동을 닫으려면 브로드 캐스트 수신자이 의도를 기다리고 필요할 때 활동을 완료한다고 선언했습니다. 이 활동의 ​​모든 인스턴스는 동일한 작업 이름으로 자체 수신자를 시작합니다.브로드 캐스트 수신기가 에뮬레이터와 휴대 전화에서 작동하지만 태블릿에서는 작동하지 않습니다.

이 응용 프로그램의 모든 측면은 에뮬레이터 API20 및 소니 Xperia S 4.1.2 버전에서 작동합니다. 만타 MID709 태블릿 (xperia와 동일한 안드로이드 버전)에서 수신기는 특정 활동이 맨 위에있는 경우 (작동 및 보이는 경우)에만 작동합니다. 그래서이 액티비티의 한 인스턴스를 닫습니다. 새로운 것을 실행하면 아무 것도 닫히지 않습니다.

방송 수신부를 선언하는 코드 (에서 onCreate 밖에 있지만 활동 내부) 에뮬레이터 난 세 끝나야 XPERIA에서

Intent intent2 = new Intent(); 
     intent2.setAction("com.application.STOP"); 
     sendBroadcast(intent2); 

(세 개의 인스턴스 :

public BroadcastReceiver broadcastReceiver = new BroadcastReceiver() { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     if (intent.getAction().equals("com.application.STOP")) { 
      unregisterReceiver(broadcastReceiver); 
      Toast.makeText(getApplicationContext(), "Intent Received", Toast.LENGTH_LONG).show(); 
      finish(); 

     } 
    } 
}; 

폐쇄 활성화 코드 실행 중) "Intent Received"토스트와 앱 종료. 태블릿에는 때로는 하나의 "의도받은"축배 또는 전혀 없습니다.

답변

0

대답은 매우 간단했고 코드는 100 % 좋았습니다. 개발자 옵션으로 타블렛에서 작업을하지 않기로했습니다. 즉, 존재하지 않는 모든 활동을 중단합니다. 내 방송 수신기를 죽이고 있었어. 이 대답이 도움이되기를 바랍니다 :)

관련 문제