杂记1:android广播监听实时监听网络,以及回调机制应用

首先说回调机制,今天在网上看了很多说回调机制的,很多文章写得很绕,我咀嚼了好久才能得出自己的一点理解。下面简要说一下我所理解的回调机制。

通俗地说,假如有两段程序,A和B。A已经封装完毕现阶段不想再改了,但B有一个函数想给A来做,这时候怎么办呢,就需要使用回调机制了。A有一个预留的接口C,B的函数为D。原理如下图:

简单粗犷的个人理解来说,把B的使用接口C的方法来重写成方法D推给A来完成。

那么,下面就Activity可以使用回调的方法来获取广播的值了。

首先,定义一个基本类A ,BroacdcastReceiver,以及接口C;

public class NetChanceRecive extends BroadcastReceiver {
    public CallBackState cbs;
    @Override
    public void onReceive(Context context, Intent intent) {
        cbs= MainActivity.cbs;
        if(ConnectivityManager.CONNECTIVITY_ACTION.equals(intent.getAction())){
            cbs.getState(Util.StateUtil(context));
        }
    }
    public interface CallBackState{
        public void getState(int state);
    }
}

定义一个判断网络类:

public class Util {
    public static int StateUtil(Context context){
        ConnectivityManager ctm= (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo networkInfo=ctm.getActiveNetworkInfo();
        if (networkInfo!=null) {
            if (networkInfo.isConnected()) {
                return -1;
            }
            else if (networkInfo.getType()==ctm.TYPE_WIFI){
                return 1;
            }
            else  if (networkInfo.getType()==ctm.TYPE_MOBILE){
                return 2;
            }
        }
        return  0;
    }
}
定义一个基本类B,重写的方法D:

public class MainActivity extends Activity implements NetChanceRecive.CallBackState{
    private int state;
    public static NetChanceRecive.CallBackState cbs;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        cbs=this;
    }

    @Override
    public void getState(int state) {
        this.state=state;
        Toast.makeText(MainActivity.this,"======"+state,Toast.LENGTH_LONG).show();
    }
}

广播注册及权限注册:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.administrator.activity" >
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
    <uses-permission android:name="android.permission.INTERNET"></uses-permission>
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme"
        >

        <activity
            android:name="com.example.administrator.MainActivity"
            android:label="@string/app_name" >

            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <receiver android:name="com.onrecive.NetChanceRecive">
            <intent-filter>
                <action android:name="android.net.conn.CONNETIVITY_CHANGE">
                </action>
            </intent-filter>
        </receiver>
    </application>

</manifest>

一个使用回调机制的网络实时监听方法就完成了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值