日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

Android 动态广播与静态广播

發(fā)布時間:2023/11/27 生活经验 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android 动态广播与静态广播 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

學(xué)而時習(xí),穩(wěn)固而之心

目前推薦使用動態(tài)廣播,現(xiàn)在已經(jīng)很就沒有使用過靜態(tài)廣播了.

動態(tài)廣播與靜態(tài)廣播的聯(lián)系

1 動態(tài)廣播的速度要快于靜態(tài)廣播

2 靜態(tài)廣播的生存期可以比動態(tài)廣播的長很多??

Manifest里面注冊的系統(tǒng)廣播接收器會被緩存在系統(tǒng)中,即使當(dāng)App關(guān)閉之后,如果有相應(yīng)的廣播發(fā)出,應(yīng)用程序仍然會被喚醒

這也是從8.0以后谷歌顯示部分靜態(tài)廣播,推薦使用動態(tài)廣播

3 動態(tài)廣播在代碼中注冊,靜態(tài)廣播在Manifest文件中配置

?

下面 通過2個案例對比 來更好的了解動態(tài)廣播與靜態(tài)廣播

1 動態(tài)廣播

activity 里面的代碼如下

public class DynamicBroadcast extends AppCompatActivity {DyReceive dyReceive;@Overrideprotected 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() {@Overridepublic void onClick(View v) {Intent intent = new Intent();intent.setAction("huxiaomu");intent.putExtra("type", "胡小牧:發(fā)送了動態(tài)廣播");sendBroadcast(intent);}});}@Overrideprotected void onPause() {super.onPause();unregisterReceiver(dyReceive);}@Overrideprotected void onDestroy() {super.onDestroy();unregisterReceiver(dyReceive);}
}

自己創(chuàng)建的DyReceive 代碼如下

public class DyReceive extends BroadcastReceiver {@Overridepublic void onReceive(Context context, Intent intent) {Toast.makeText(context, intent.getStringExtra("type"), Toast.LENGTH_SHORT).show();}
}

2 靜態(tài)廣播?

activity 代碼如下

public class BroadStaticActivity extends AppCompatActivity {@Overrideprotected void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.broad_static_activity_layout);findViewById(R.id.st_btn).setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Intent intent = new Intent();intent.setAction("hly");intent.setPackage(getPackageName());intent.putExtra("type", "胡小牧:發(fā)送了靜態(tài)廣播");sendBroadcast(intent);}});}
}

Manifest 代碼如下

  <receiverandroid:name=".StReceive"android:enabled="true"android:exported="true"><intent-filter><!-- 自定義Action--><action android:name="hly" /></intent-filter></receiver>

注意:這里enable是指是否啟動這個廣播接收器;exported:是否允許接收本程序以外的廣播

自己創(chuàng)建StReceive 代碼如下

public class StReceive extends BroadcastReceiver {@Overridepublic void onReceive(Context context, Intent intent) {Toast.makeText(context, intent.getStringExtra("type"), Toast.LENGTH_SHORT).show();}
}

?

可以看出明顯的區(qū)別就是一個在代碼中注冊,一個在配置文件中注冊的

?

下面在來一個動態(tài)廣播監(jiān)聽網(wǎng)絡(luò)變化的代碼如下

public class MainActivity extends AppCompatActivity {private static final String tag = "-------------hxm";BroadcastReceiver receiver = new BroadcastReceiver() {@Overridepublic 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, "當(dāng)前網(wǎng)絡(luò)名稱:" + name);//doSomething()} else {Toast.makeText(context, "當(dāng)前網(wǎng)絡(luò)不可用", Toast.LENGTH_SHORT).show();Log.e(tag, "沒有可用網(wǎng)絡(luò)");//doSomething()}}}};@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);IntentFilter mFilter = new IntentFilter();mFilter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);registerReceiver(receiver, mFilter);}@Overrideprotected void onPause() {super.onPause();unregisterReceiver(receiver);}@Overrideprotected void onDestroy() {super.onDestroy();unregisterReceiver(receiver);}
}

?

demo 地址參考 希望能更好的理解廣播

總結(jié)

以上是生活随笔為你收集整理的Android 动态广播与静态广播的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。