首页 > 系统 > Android > 正文

Android入门之广播

2019-11-09 17:36:32
字体:
来源:转载
供稿:网友

广播是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);    }}

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

不喜勿喷,谢谢


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表