第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定

使用廣播接收器動態(tài)注冊實(shí)現(xiàn)監(jiān)聽網(wǎng)絡(luò)變化與靜態(tài)注冊實(shí)現(xiàn)開機(jī)自啟

標(biāo)簽:
Android
  1. 动态注册实现监听网络变化
public class MainActivity extends Activity {

    private IntentFilter mIntentFilter;
    private NetWorkChangeReceiver mNetWorkChangeReceiver;//自定义内部类NetWorkChangeReceiver 

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mIntentFilter = new IntentFilter();
        mIntentFilter.addAction("android.net.conn.CONNECTIVITY_CHANGE");
/*当网络状态发生变化时,系统发出的是android.net.conn.CONNECTIVITY_CHANGE
这条广播,所以说,想监听什么类型的广播,就在这里添加相应的action就行了。*/

        mNetWorkChangeReceiver = new NetWorkChangeReceiver();
        registerReceiver(mNetWorkChangeReceiver, mIntentFilter);//注册广播接收器
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        unregisterReceiver(mNetWorkChangeReceiver);//动态注册的广播接收器需取消
    }

    class NetWorkChangeReceiver extends BroadcastReceiver {
        @Override
        public void onReceive(Context context, Intent intent) {
            ConnectivityManager connectivityManager = (ConnectivityManager)
                    getSystemService(Context.CONNECTIVITY_SERVICE);
//ConnectivityManager是一个系统服务类,专门用来管理网络连接
            NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
            if (networkInfo != null && networkInfo.isAvailable()) {
// networkInfo.isAvailable()判断当前是否有网络
                Toast.makeText(context, "当前网络可用", Toast.LENGTH_SHORT).show();
            } else {
                Toast.makeText(context, "无可用的网络", Toast.LENGTH_SHORT).show();
            }
        }
    }
}

最后,记得需要在manifest文件中加入可以查看网络连接的权限。
uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"

  1. 静态注册实现开机自启
    动态注册虽然灵活,但有一个弱点,就是必须要在程序启动之后才能接收广播
public class BootCompleteReceiver extends BroadcastReceiver{
    @Override
    public void onReceive(Context context, Intent intent) {
        Toast.makeText(context , "BroadcastText已启动!" , Toast.LENGTH_SHORT).show();
    }
}

然后在mainfest文件中将这个广播器的类名注册
uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED
此为监听系统开机广播权限

<application
...>
<receiver android:name=".BootCompleteReceiver">
            <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED"></action>
            </intent-filter>
        </receiver>
...
</application>

首先通过android:name 来指定具体注册哪个广播接收器,然后在intent-filer标签中加入想要接收的广播即可。
注意:
不同在onReceive方法中添加过多的逻辑或进行任何耗时操作,因为在广播接收器中是不允许开启线程的,当onReceive方法进行了较长时间而没有结束时,程序就会报错。因此广播接收器更多的是扮演一种打开程序其他组件的角色。如创建一条状态栏通知,或者启动一个服务等。


转载自 郭霖 《第一行代码》

點(diǎn)擊查看更多內(nèi)容
6人點(diǎn)贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優(yōu)質(zhì)文章

正在加載中
感謝您的支持,我會繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊有機(jī)會得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號

舉報

0/150
提交
取消