AndroidStudio 브로드캐스트 상세 정보
3058 단어 AS
//메모: 안드로이드 소스 코드 다운로드
방송 메커니즘, 먼저 말하자면 방송은 표준 방송과 질서 있는 방송으로 나뉜다.
표준 방송은 완전히 비동기적인 방송으로 방송이 나간 후 모든 방송 수신기는 거의 같은 시간에 동시에 방송을 수신하여 효율은 높지만 차단할 수 없다.
질서정연한 방송은 동기화된 조작이다.매 시간마다 하나의 방송 수신기만 이 방송을 받아들일 수 있고 모든 방송 수신기는 설정된 우선순위에 따라 수신할 수 있으며 높은 우선순위의 방송 수신기는 방송을 차단할 수 있다.
Android에는 여러 시스템 브로드캐스트가 내장되어 있습니다. 먼저 시스템 브로드캐스트에 대해 살펴보겠습니다.
시스템 방송은 등록 방식에 따라 동적 방송과 정적 방송으로 나눌 수 있다.동적 방송은 코드에 등록된 방송으로 앱이 실행될 때만 수신할 수 있는 방송이다.정적 방송은 앱이 실행되지 않을 때도 받을 수 있는 방송이다. 그러나 이것은 우리가 정적 방송을 이용하여 앱을 시작할 수 있다는 것을 의미하지 않는다. 왜냐하면 구글이android8에 있기 때문이다.0 이후에 방송에 대해 완전한 제한을 했다.대부분의 정적 방송을 없애버려서 현재 대부분의 방송은 동적 등록을 해야만 수신할 수 있다.
다음은 네트워크 변화를 예로 삼아 동적 방송(코드부터 올리기)을 소개한다.
여기서 다루는 코드의 첫 번째 부분은 Activity입니다.
public class MainActivity extends AppCompatActivity {
private static final String TAG = "MainActivity";
private IntentFilter intentFilter;
private MyBroadCastReceiver myBroadCastReceiver;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// IntentFilter
// action
intentFilter=new IntentFilter();
//android.net.conn.CONNECTIVITY_CHANGE, action ,
intentFilter.addAction("android.net.conn.CONNECTIVITY_CHANGE");
//
myBroadCastReceiver=new MyBroadCastReceiver();
//
registerReceiver(myBroadCastReceiver,intentFilter);
}
// BroadcastReceiver, 。
//onReceive()
class MyBroadCastReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
Log.i(TAG, "onReceive: ");
try{
//ConnectivityManager , getSystemService ConnectivityManager
ConnectivityManager connectivityManager=(ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
//ConnectivityManager getActiveNetworkInfo() NetWorkInfo
//
NetworkInfo networkInfo=connectivityManager.getActiveNetworkInfo();
if (networkInfo!=null&&networkInfo.isAvailable()){
Log.i(TAG, "onReceive: ");
}else {
Log.i(TAG, "onReceive: ");
}
}catch (Exception e){
e.printStackTrace();
}
}
}
@Override
protected void onDestroy() {
super.onDestroy();
//
// ,
unregisterReceiver(myBroadCastReceiver);
}
}
두 번째 부분의 코드는 안드로이드 매니페스트입니다.xml 파일(목록)에서 신청 권한:
이것은 실현된 효과도이다.
다음은 정적 방송입니다. 정적 방송은 현재 환경에서 전시하기 어려우니 코드를 말씀드리겠습니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
android startService 사례MainActivity. java 클래스...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.