广播的静态和动态类型

静态广播:

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. text-transform CSS

    text-transform  控制文本的大小写(只对英文起作用,对汉字无效) Example: <p class="p1">This is an HI Element ...

  2. Python的set集合

    set集合也用{}表示,set中的元素是不重复的.无序的,且它里面的元素必须是可hash的(int,str,tuple,bool),set是可变的. 1.使用set去重 m = [1, '] s = ...

  3. [解决]CXF wsdl2java 生成代码存在的一些问题

    1.环境 CXF版本:3.2.4 JDK版本:1.8.0_112 2.问题 2.1.问题种类1 属性 "Value" 已定义.请使用 <jaxb:property> 解 ...

  4. Java 8 方法引用

    转自:https://www.runoob.com/java/java8-method-references.html 方法引用通过方法的名字来指向一个方法. 方法引用可以使语言的构造更紧凑简洁,减少 ...

  5. 前端--vue框架

    1.下载 查看已安装好的版本 -------渐进式的JS框架--------- vue是什么 Vue.js(读音 /vjuː/, 类似于 view) 是一套构建用户界面的 渐进式框架.与其他重量级框架 ...

  6. jquery 返回浏览器顶部

    经常在网页中看到有这样的现象,点击一个按钮,然后页面会跳到页面的中指定的位置,那这种效果是怎么实现的呢? 很多网页都有这种效果:返回顶部或者跳到不同的楼层(以下是天猫的效果) 实现原理: 1.我们来看 ...

  7. K8s部署使用CFSSL创建证书

    证书的编码格式 PEM(Privacy Enhanced Mail),通常用于数字证书认证机构(Certificate Authorities,CA),扩展名为.pem, .crt, .cer, 和  ...

  8. MySQL的安装流程与入门

    MySQl是一种关系型数据库,存放的是文字数据,它是以“表”的形式进行存储的.由于MySQl的实用性和不收费,它在世界上是应用最多的数据库,但是,它不支持大量数据写入.接下来,我将为大家分享一下我学习 ...

  9. Secondary Indices

    [Secondary Indices] EOSIO has the ability to sort tables by up to 16 indices.  A table's struct cann ...

  10. python生成器(generator)、迭代器(iterator)、可迭代对象(iterable)区别

    三者联系 迭代器(iterator)是一个更抽象的概念,任何对象,如果它的类有next方法(next python3)和__iter__方法返回自己本身,即为迭代器 通常生成器是通过调用一个或多个yi ...