Android 동적 브로드캐스트 및 정적 브로드캐스트
현재 동적 방송을 추천하고 있는데, 지금은 정적 방송을 사용한 적이 거의 없다.
동적 방송과 정적 방송의 연계
1 동적 방송의 속도는 정적 방송보다 빠르다
2 정적 방송의 생존 기간은 동적 방송보다 훨씬 길다
에서안에 등록된 시스템 브로드캐스트 수신기는 시스템에 캐시되며, 앱이 꺼진 후에도 해당 브로드캐스트가 전송되면 애플리케이션이 깨어난다
이것도 8.0 이후 구글이 일부 정적 방송을 보여줌으로써 동적 방송을 추천한다
3 동적 브로드캐스트는 코드에 등록되고 정적 브로드캐스트는 Manifest 파일에 구성
다음은 두 가지 사례를 비교하여 동적 방송과 정적 방송을 더욱 잘 이해하고자 한다.
1 동적 브로드캐스트
activity 안의 코드는 다음과 같다
public class DynamicBroadcast extends AppCompatActivity {
DyReceive dyReceive;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.dynamic_broadcast_layout);
// IntentFilter
IntentFilter filter = new IntentFilter();
filter.addAction("huxiaomu");
dyReceive = new DyReceive();
//
registerReceiver(dyReceive, filter);
findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent();
intent.setAction("huxiaomu");
intent.putExtra("type", " : ");
sendBroadcast(intent);
}
});
}
@Override
protected void onPause() {
super.onPause();
unregisterReceiver(dyReceive);
}
@Override
protected void onDestroy() {
super.onDestroy();
unregisterReceiver(dyReceive);
}
}
직접 만든 DyReceive 코드는 다음과 같습니다.
public class DyReceive extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, intent.getStringExtra("type"), Toast.LENGTH_SHORT).show();
}
}
2 정적 브로드캐스트
activity 코드는 다음과 같습니다
public class BroadStaticActivity extends AppCompatActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.broad_static_activity_layout);
findViewById(R.id.st_btn).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent();
intent.setAction("hly");
intent.setPackage(getPackageName());
intent.putExtra("type", " : ");
sendBroadcast(intent);
}
});
}
}
Manifest
주의: 여기enable는 이 방송 수신기를 가동하는지 여부를 가리킨다.exported: 이 프로그램 이외의 방송을 수신할 수 있는지 여부
StReceive 코드는 다음과 같습니다.
public class StReceive extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, intent.getStringExtra("type"), Toast.LENGTH_SHORT).show();
}
}
눈에 띄는 차이점은 코드에 등록된 것과 프로필에 등록된 것이다
다음은 동적 방송 감청 네트워크 변화 코드가 다음과 같다.
public class MainActivity extends AppCompatActivity {
private static final String tag = "-------------hxm";
BroadcastReceiver receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (action.equals(ConnectivityManager.CONNECTIVITY_ACTION)) {
ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo info = connectivityManager.getActiveNetworkInfo();
if (info != null && info.isAvailable()) {
String name = info.getTypeName();
Log.e(tag, " :" + name);
//doSomething()
} else {
Toast.makeText(context, " ", Toast.LENGTH_SHORT).show();
Log.e(tag, " ");
//doSomething()
}
}
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
IntentFilter mFilter = new IntentFilter();
mFilter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
registerReceiver(receiver, mFilter);
}
@Override
protected void onPause() {
super.onPause();
unregisterReceiver(receiver);
}
@Override
protected void onDestroy() {
super.onDestroy();
unregisterReceiver(receiver);
}
}
데모 주소 참고로 라디오를 더 잘 이해해주셨으면 좋겠습니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 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에 따라 라이센스가 부여됩니다.