Android入门之广播

广播是Android的四大组件之一,类似于监听不过是全局的。


我这是模仿Android系统广播的做法做一个无序的广播


所谓广播就是由接受者和发送至者组成


为了区分动态广播与静态广播我这里会分别建立以便区分


我这里先做一个发送者


布局样式:




        android:layout_height="wrap_content"
        android:hint="请输入广播内容"
        android:id="@+id/et_main_content"
        />
    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="发送"
        android:onClick="send"
        />
  

JAVA代码:

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;

public class MainActivity extends AppCompatActivity {

    private EditText et_main_content;
    private Intent intent;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        et_main_content = (EditText) findViewById(R.id.et_main_content);

        intent = new Intent();

        //设置广播的名字(设置Action)
        intent.setAction("广播名且具有唯一性");
    }   
       //按钮的 onClick事件
           public void send(View view){
        String content=et_main_content.getText().toString();

        //携带数据
        intent.putExtra("data",content);

        //发送广播(无序广播)
          sendBroadcast(intent);



    }


静态接受者:

新建一个项目,在minActivity同级目录新建一个类继承BroadcastReceiver


我这里就打印一下了(值已经拿到)


import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;

/**
 * @author Zking-Snail
 * @time 2017/2/7 9:54
 * @Version ${REV}
 */
public class MyReceived01 extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        if("广播名".equals(intent.getAction())){
            String data=intent.getStringExtra("data");
            Log.i("test","静态接受者收到广播了:"+data);
        }
    }
}


还有就是静态广播的话接受者要在清单文件里添加这个



  <EditText
        android:layout_width="match_parent"
        <!--配置广播接受者:
        .在清单文件中配置(静态广播)
        -->

        <receiver android:name=".类名">
            <intent-filter>
                <action android:name="广播名"></action>
            </intent-filter>
        </receiver>


动态接受者:

与静态的相识新建一个项目,在minActivity同级目录新建一个类继承BroadcastReceiver


import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;

/**
 * @author Zking-Snail
 * @time 2017/2/7 9:54
 * @Version ${REV}
 */
public class MyReceived01 extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        if("广播名".equals(intent.getAction())){
            String data=intent.getStringExtra("data");
            Log.i("test","动态接受者收到广播了:"+data);
        }
    }
}

不同的就是在动态广播的MainActivity里要加点东西




import android.content.IntentFilter;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

public class MainActivity extends AppCompatActivity {

    private MyReceived02 myReceived02;
    private IntentFilter intentFilter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        myReceived02 = new MyReceived02();
        intentFilter = new IntentFilter();
        intentFilter.addAction("com.zking.g150831_android20_sender.955");
    }

    @Override
    protected void onResume() {
        super.onResume();
        //动态注册广播
        registerReceiver(myReceived02,intentFilter);
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        //注销动态广播(一定要注销不然报错)
        unregisterReceiver(myReceived02);
    }
}




我这里就只是模仿安卓系统广播的做法而已,可能不够全面


不喜勿喷,谢谢




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值