广播的静态和动态类型

静态广播:

1.继承之broadcastreceiver

public class MyStaticBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
//RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.widget_layout); Toast.makeText(context,"zcxczcxstatic",Toast.LENGTH_SHORT).show();
Log.d("zcx","staticbroad");
//remoteViews.setTextViewText(R.id.widget_text, intent.getStringExtra("MESSAGE"));
//context.startActivity(intent);
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setTitle("提示")
.setMessage("收到BroadcastSend应用程序的广播")
.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) { }
})
.setNegativeButton("取消", new DialogInterface.OnClickListener() { @Override
public void onClick(DialogInterface dialog, int which) { }
});
AlertDialog dialog = (AlertDialog) builder.create();
dialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
dialog.show(); //AppWidgetManager.getInstance(context).updateAppWidget(new ComponentName(
// context.getApplicationContext(), MyWidgetProvider.class), remoteViews);
}

2.在AndroidManifest中定义

<receiver android:priority="1000"  android:name=".MyStaticBroadcastReceiver"
android:permission="com.example.zcx.permission"
android:process=":remote"
>
<intent-filter>
<action android:name="android.zcx"></action>
</intent-filter>
</receiver>>

3.client 调用

Log.d("zcx","sendStaticBroadcastButton");
//Toast.makeText(getApplicationContext(),"zcxczcx",Toast.LENGTH_SHORT).show();
Intent intent = new Intent();
intent.setAction("android.zcx");
//intent.setAction("android.appwidget.action.zcx");
intent.addFlags(FLAG_INCLUDE_STOPPED_PACKAGES);
//intent.putExtra("MESSAGE", editText.getText().toString());
sendBroadcast(intent);

动态广播:

1.继承之broadcastreceiver

@Override
public void onReceive(Context context, Intent intent) {
//RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.widget_layout);
Log.d("zcx","MyDynamicBroadcastReceiver");
//remoteViews.setTextViewText(R.id.widget_text, intent.getStringExtra("MESSAGE"));
Toast.makeText(context,"zcxczcxDYnamic",Toast.LENGTH_SHORT).show();
//AppWidgetManager.getInstance(context).updateAppWidget(new ComponentName(
// context.getApplicationContext(), MyWidgetProvider.class), remoteViews);
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setTitle("提示")
.setMessage("收到BroadcastSend dYNAMIC应用程序的广播")
.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) { }
})
.setNegativeButton("取消", new DialogInterface.OnClickListener() { @Override
public void onClick(DialogInterface dialog, int which) { }
});
AlertDialog dialog = (AlertDialog) builder.create();
dialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
dialog.show();
}

2.服务端代码注册启动

IntentFilter dynamic_filter = new IntentFilter();
dynamic_filter.addAction("android.appwidget.action.zcx");
myDynamicBroadcastReceiver = new MyDynamicBroadcastReceiver();
registerReceiver(myDynamicBroadcastReceiver,dynamic_filter);

3.客户端调用

public void onClick(View v) {
Intent intent = new Intent();
//intent.setAction("android.zcx");
intent.setAction("android.appwidget.action.zcx");
//intent.addFlags(FLAG_INCLUDE_STOPPED_PACKAGES);
//intent.putExtra("MESSAGE", editText.getText().toString());
sendBroadcast(intent);
}

动态广播和静态广播的区别:

(1)动态注册广播不是常驻型广播,也就是说广播跟随Activity的生命周期。注意在Activity结束前,移除广播接收器。

静态注册是常驻型,也就是说当应用程序关闭后,如果有信息广播来,程序也会被系统调用自动运行。

这里采用动态和静态的实现方式,服务和客户端,服务要打开,客户才可以调用服务的广播接收,动态可以理解,静态为什么?

Android-broadcast静态动态广播的更多相关文章

  1. Android笔记(二十七) Android中的动态广播和静态广播

    广播接收器注册一共有两种形式 : 静态注册和动态注册. 两者及其接收广播的区别: 1.动态注册的广播 永远要快于 静态注册的广播,不管静态注册的优先级设置的多高,不管动态注册的优先级有多低>\ ...

  2. Android中的BroadCast静态注册与动态注册

    1.静态注册 新建MyBroadcast类继承BroadcastReceiver,实现onReceive方法 /** * Author:JsonLu * DateTime:2015/9/21 16:4 ...

  3. Android 静态广播和动态广播接收顺序

    Android广播有两个很重要的要素: 1 广播 - 用于发送广播 有序广播  -  被广播接收器接收后,可被终止,无法往下继续传达.         典型代表:短信广播 普通广播  -  发送至每一 ...

  4. Android实现AppWidget、Broadcast静态注册

    Android实现AppWidget.Broadcast静态注册 本篇博客是基于我上一篇博客继续修改的,详情请看Android实现AppWidget.Broadcast动态注册 开发工具:Andori ...

  5. Android学习笔记--Broadcast, BroadcastReceiver(广播)

    参考资料:http://www.cnblogs.com/playing/archive/2011/03/23/1992030.html 在 Android 中使用 Activity, Service, ...

  6. Android系统中的广播(Broadcast)机制简要介绍和学习计划

    在Android系统中,广播(Broadcast)是在组件之间传播数据(Intent)的一种机制:这些组件甚至是可以位于不同的进程中,这样它就像Binder机制一样,起到进程间通信的作用:本文通过一个 ...

  7. Android静态注册广播无法接收的问题(8.0+版本)

    如果你静态注册的广播无法接收到消息,请先检查下:你的安卓版本是不是8.0+ * 前言** Google官方声明:Beginning with Android 8.0 (API level 26), t ...

  8. Android跨进程通信广播(Broadcast)

    广播是一种被动跨进程通讯的方式.当某个程序向系统发送广播时,其他的应用程序只能被动地接收广播数据.这就象电台进行广播一样,听众只能被动地收听,而不能主动与电台进行沟通,在应用程序中发送广播比较简单.只 ...

  9. Android框架中的广播机制

    一.广播通过Intent发送出去 // 定义广播的意图过滤器 private String action = "com.xxx.demo.Broadcast.STATUS_CHANGED&q ...

随机推荐

  1. node-gyp和node-pre-gyp笔记

    node-gyp大家都不陌生,先不做赘述. node-pre-gyp,install命令可以将存在网络上的作者根据不同平台预编译好的二进制文件下载下来 因为项目需要,博主需要本地编译,而不是去网上下载 ...

  2. Nginx 安装配置教程

    1.安装 Nginx 的先决条件 依赖库:GCC, PCRE, zlib, OpenSSL . * GCC (Nginx 由 C 语言编写,因此需要在系统上安装一个编译工具) 基本上 Linux 自带 ...

  3. 关于java字节码框架ASM的学习

      一.什么是ASM ASM是一个java字节码操纵框架,它能被用来动态生成类或者增强既有类的功能.ASM 可以直接产生二进制 class 文件,也可以在类被加载入 Java 虚拟机之前动态改变类行为 ...

  4. sqlserver to oracle

    SELECT c.*, d .Organization_Name, d .ParentId, e.Roles_ID, e.Roles_Name FROM ( SELECT a.*, b.Organiz ...

  5. Mac 日常使用tips

    20180725: windows标准的键盘连接了mac如何映射键盘?最大的好处是可以向后删除,还可以一键PageUP, PageDown ref: https://support.apple.com ...

  6. exchang2010OWA主界面添加修改密码选项

    原文链接:http://www.mamicode.com/info-detail-1444660.html exchange邮箱用户可以登录OWA修改密码,当AD用户密码过期或者重置密码勾选了“用户下 ...

  7. Python cx_Oracle 安装小记

    因为我的个人网站 restran.net 已经启用,博客园的内容已经不再更新.请访问我的个人网站获取这篇文章的最新内容,Python cx_Oracle 安装小记 SQLAlchemy 是 Pytho ...

  8. python 数据分析库介绍

    1 引言 高效处理数据的python工具: 与外界进行交互: 读写各种文件格式和数据库 准备: 对数据进行清理.修整.整合.规范化.重塑.切片切换.变形等处理以便进行分析 转换: 对数据集做一些数学和 ...

  9. python杂记一

    1. 输出CSV文件 用python输出csv文件不难,可是MS office excel和WPS 对输出的CSV文件打开规则不一样. WPS可以支持CSV以'\t'为分隔符,打开文件直接写内容 MS ...

  10. 一个linux 4.9,4.14内核的bbr带宽估计偏低问题

    linux 4.9内核,bbr的带宽估计问题. 一个正常的bbr流量图: 对应的ttl图形: 一个异常的bbr流量图: 可以看出,异常的bbr流量图,出现了一个很低的带宽,且稳定在这个带宽10s左右, ...