关于android的广播机制里面的网络状态监听

黑煤碳 2017-08-09 11:15:51
这是书里面的原话
大概意思:就是说我的这个广播器监听网络状态,当网络状态发生变化的时候才会发出哪个值,然后我的广播器才会启动
问题:但是我在使用我做的哪个广播器的app的时候,我一启动app他就会出现Toast,不管我是没网还是有网状态,
app一启动它就会立马执行,但是我的网络并没有发生变化,求大神指点迷津!

package com.example.myborad;

import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toast;

public class MainActivity extends Activity {
private IntentFilter intentfile;
private NetworkChangeReciver network;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

intentfile=new IntentFilter();
intentfile.addAction("android.net.conn.CONNECTIVITY_CHANGE");
network=new NetworkChangeReciver();
registerReceiver(network, intentfile);

}

@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
unregisterReceiver(network);
}
class NetworkChangeReciver extends BroadcastReceiver{

@Override

public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub'
ConnectivityManager connectivityManager=(ConnectivityManager)getSystemService(context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo=connectivityManager.getActiveNetworkInfo();
if(networkInfo!=null&&networkInfo.isAvailable())
Toast.makeText(context, "当前网络正常!", Toast.LENGTH_SHORT).show();
else
Toast.makeText(context, "当前网络处于断网!", Toast.LENGTH_SHORT).show();
}

}
}
...全文
493 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
黑煤碳 2017-08-12
  • 打赏
  • 举报
回复
老大,哪到底是怎么肥事呢? 求详细的讲解,只有网络监听才会一开始就发一次广播吗?
wxx2150 2017-08-12
  • 打赏
  • 举报
回复
android.net.conn.CONNECTIVITY_CHANGE 这个广播可能是通过 broadcastStickyIntent 来分发的,如果是的,每次注册监听就会收到最后一次的广播
chengzhouyang11 2017-08-12
  • 打赏
  • 举报
回复
没必要这么钻牛角尖,这毕竟是系统发给的广播,我们又不知道系统发送网络状态广播的逻辑,我们只是被动的接收系统广播,lz把这个结果作为经验记录下来就好,至于是不是只有监听网络状态变化才会出现这种情况,我没有试过所有的系统广播就不多说了
ganshenml 2017-08-10
  • 打赏
  • 举报
回复
引用 3 楼 chengzhouyang11 的回复:
引用 2 楼 ganshenml 的回复:
网络监听从无到有,这也是变化。
但是如果是监听别的广播比如监听耳机的插拔或者监听电话的状态这种广播,是不会像监听网络状态这样,一注册就收到广播,我觉得不能这么理解
你把监听的receiver中收到的网络详细信息打印出来就知道。 网络的变化不仅仅是网络的有无,也包含网络信号的强弱变化等等。
chengzhouyang11 2017-08-10
  • 打赏
  • 举报
回复
引用 2 楼 ganshenml 的回复:
网络监听从无到有,这也是变化。
但是如果是监听别的广播比如监听耳机的插拔或者监听电话的状态这种广播,是不会像监听网络状态这样,一注册就收到广播,我觉得不能这么理解
ganshenml 2017-08-10
  • 打赏
  • 举报
回复
网络监听从无到有,这也是变化。
chengzhouyang11 2017-08-10
  • 打赏
  • 举报
回复
你就理解成app在初始化的时候系统会对当前网络环境进行一次判断,然后发了一次广播,如果是自定义广播那么发送的逻辑自己可以控制

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧