Android BroadcastReceiver 방송 등록 방식 요약
3891 단어 AndroidBroadcastReceiver
정적 등록
동적 등록
1.정적 등록
AndroidManifest.xml 에서 태그 로 설명 합 니 다.
속성 설명:
<receiver
android:enabled=["true" | "false"]
// broadcastReceiver App
// receiver intent-filter : intent-filter, true, false
android:exported=["true" | "false"]
android:icon="drawable resource"
android:label="string resource"
// BroadcastReceiver
android:name=".mBroadcastReceiver"
// BroadcastReceiver ;
android:permission="string"
//BroadcastReceiver
// app ,
// :Android
android:process="string" >
//
//
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
</intent-filter>
</receiver>
등록 예시
<receiver
// mBroadcastReceiver
android:name=".mBroadcastReceiver" >
//
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
</intent-filter>
</receiver>
이 앱 이 처음 시 작 될 때 시스템 은 자동 으로 mBroadcastReceiver 클래스 를 실례 화하 고 시스템 에 등 록 됩 니 다.2.동적 등록
코드 에서 Context 의 registerReceiver()방법 을 호출 하여 BroadcastReceiver 를 동적 으로 등록 합 니 다.구체 적 인 코드 는 다음 과 같 습 니 다.
@Override
protected void onResume(){
super.onResume();
// BroadcastReceiver & IntentFilter
mBroadcastReceiver mBroadcastReceiver = new mBroadcastReceiver();
IntentFilter intentFilter = new IntentFilter();
//
intentFilter.addAction(android.net.conn.CONNECTIVITY_CHANGE);
// Context registerReceiver()
registerReceiver(mBroadcastReceiver, intentFilter);
}
// ,
// onPause() unregisterReceiver(mBroadcastReceiver)
// Activity , MyBroadcastReceiver
// Activity , MyBroadcastReceiver 。
@Override
protected void onPause() {
super.onPause();
// onResume()
unregisterReceiver(mBroadcastReceiver);
}
}
3.두 가지 등록 방식 의 차이4.각별히 주의
동적 방송 은 Activity 의 onResume()에 등록 하고 onPause()에서 로그아웃 하 는 것 이 좋다.
원인:
1.동적 방송 에 대해 등록 이 있 으 면 반드시 로그아웃 이 있어 야 한다.그렇지 않 으 면 메모리 가 유출 될 수 있다.
중복 등록,중복 로그아웃 도 허용 되 지 않 습 니 다.
2.Activity 수명 주 기 는 다음 과 같다.
Activity 라 이 프 사이클 의 방법 은 쌍 을 이 루어 나타 나 는 것 입 니 다.
- onCreate() & onDestory()
- onStart() & onStop()
- onResume() & onPause()
onResume()등록,onPause()로그아웃 은 onPause()가 앱 이 사망 하기 전에 반드시 실행 되 기 때문에 방송 이 앱 이 사망 하기 전에 반드시 로그아웃 되 어 메모리 유출 을 방지 할 수 있 습 니 다.
1.onCreate()&onDestory()또는 onStart()&onStop()에 등록 하지 않 고 로그아웃 하 는 것 은:
시스템 이 메모리 부족(우선 순위 가 높 은 응용 에 메모리 가 필요 합 니 다.위의 빨간색 상 자 를 보십시오)으로 인해 Activity 가 차지 하 는 자원 을 회수 하려 고 할 때 Activity 는 onPause()방법 을 실행 한 후에 삭 제 됩 니 다.일부 생명주기 방법 은 onStop()이 고 onDestory()는 실행 하지 않 습 니 다.이 Activity 로 다시 돌아 갈 때 는 onCreate 방법 부터 실 행 됩 니 다.2.만약 에 저희 가 라디오 의 로그아웃 을 onStop(),onDestory()방법 에 두 었 다 고 가정 하면 Activity 가 삭 제 된 후에 도 onStop(),onDestory()방법 을 실행 하지 않 았 을 수도 있 습 니 다.즉,방송 이 아직 로그아웃 되 지 않 아 메모리 가 유출 될 수도 있 습 니 다.3.그러나 onPause()는 반드시 실 행 될 것 이 고 방송 이 앱 이 사망 하기 전에 반드시 로그아웃 되 어 메모리 유출 을 방지 할 것 을 보장 한다.
읽 어 주 셔 서 감사합니다. 여러분 에 게 도움 이 되 기 를 바 랍 니 다.본 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Bitrise에서 배포 어플리케이션 설정 테스트하기이 글은 Bitrise 광고 달력의 23일째 글입니다. 자체 또는 당사 등에서 Bitrise 구축 서비스를 사용합니다. 그나저나 며칠 전 Bitrise User Group Meetup #3에서 아래 슬라이드를 발표했...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.