Activity 클래스의 내부 클래스로 정의 된 경우 BroadcastReceiver
을 사용할 수 없다는 것을 알고 있습니다. 하지만 왜 그런지 궁금합니다. 시스템이 수신기 인스턴스를 인스턴스화하기 위해 큰 Activity
개체를 인스턴스화해야하기 때문입니까?내부 클래스로 BroadcastReceiver
12
A
답변
26
... 시스템에서 수신자 인스턴스를 설치하기 위해 많은 액티비티 객체를 인스턴스화해야하기 때문에?
다른 정적 인 내부 클래스와 마찬가지로. (정적이 아닌) 내부 클래스의 인스턴스를 생성하기 전에 외부 클래스의 인스턴스를 어딘가에서 가져와야합니다 (예 : 인스턴스화 또는 다른 메커니즘으로).
시스템에 의해 자동으로 인스턴스화 될 매니페스트 파일의 인 텐트에서 호출되는 글로벌 브로드 캐스트 수신기에는 브로드 캐스트 리시버 비 정적 내부 클래스의 인스턴스를 만드는 데 사용할 외부 인스턴스가 없습니다. 이것은 외부 클래스의 Activity와 무관합니다.
그러나 액티비티로 작업 할 때 리시버를 사용하는 경우 액티비티에서 직접 브로드 캐스트 리시버를 인스턴스화 할 수 있습니다 (액티비티 콜백 중 하나는 작업 할 외부 클래스의 인스턴스가있는 반면 : this
) 다음과 같은 적절한 그 등록을 취소/등록 : 나는 온라인 몇 가지 예에서 보았 듯이 난 당신이 (또한 제안으로 내부 클래스를 사용하는 것을 시도했다
public class MyActivity extends Activity {
private BroadcastReceiver myBroadcastReceiver =
new BroadcastReceiver() {
@Override
public void onReceive(...) {
...
}
});
...
public void onResume() {
super.onResume();
....
registerReceiver(myBroadcastReceiver, intentFilter);
}
public void onPause() {
super.onPause();
...
unregisterReceiver(myBroadcastReceiver);
}
...
}
관련 문제
- 1. BroadcastReceiver 사용하기
- 2. BroadCastReceiver 시작
- 3. 서비스와 BroadCastReceiver
- 4. BroadcastReceiver 위치 :
- 5. 클래스를 내부 클래스로 정의 할 때 일반적으로 공용 필드를 내부 클래스로 정의 할 수 있습니까?
- 6. 안드로이드 : 나는 활동의 내부 클래스로 방송 수신기를 만들려면 어떻게해야합니까
- 7. Android 서비스 + BroadcastReceiver, PhoneStateListener
- 8. BroadcastReceiver peekService() null을 반환합니다.
- 9. BroadcastReceiver TTS 및 볼륨
- 10. AndroidManifext.xml 파일에서 BroadcastReceiver 구현
- 11. MediaPlayer BroadcastReceiver RuntimeException
- 12. Android BroadcastReceiver 등록 문제
- 13. BroadcastReceiver 호출시 inputMethod 메서드 호출
- 14. BroadcastReceiver 수신 수신 제한 시간
- 15. BroadcastReceiver 새로운 의도를 시작하는 방법
- 16. 프로세스의 BroadcastReceiver 수명주기 란 무엇입니까?
- 17. 멀티 파트 SMS 용 BroadcastReceiver
- 18. Android Call TTS in BroadcastReceiver
- 19. ListActivity의 getExtras가 Android에서 NULL입니다. BroadcastReceiver
- 20. 내부 div에는 테두리가 있습니다 - 외부 div의 클래스로 재정의하는 방법은 무엇입니까?
- 21. 내부 클래스로 방향 변경 중 메모리 누수가 발생했습니다.
- 22. 브로드 캐스트 리시버를 매니페스트 파일의 내부 클래스로 정의 할 수 있습니까?
- 23. 내부 브로드 캐스트 수신기가 작동하지 않습니까?
- 24. 일정 기간이 지난 후 BroadcastReceiver 시작 서비스
- 25. 안드로이드 BroadcastReceiver, getResultData() 항상 null을 반환
- 26. Android BroadcastReceiver 정적 인스턴스 변수로 쓰레드/타이머
- 27. 새 활동 시작 BroadcastReceiver 또는 서비스 클래스
- 28. 내부 생성자
- 29. EnumSet이 추상 클래스로 구현되고 EnumMap이 구체적 클래스로 구현되는 이유는 무엇입니까?
- 30. Actionscript에서 하위 클래스로 캐스팅
) : https://gist.github.com/daviddoria/80c9c5dc98913b54bf00하지만 장치를 회전해도 onReceive가 호출되지 않습니다. 어떤 제안? –
bert는 외부 클래스 객체를 보유하여 메모리 누수를 초래합니까? –