广播的静态和动态类型

静态广播:

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. python中建模分析零息票收益率曲线--复利和连续复利

    收益率曲线(Yield Curve)是显示一组货币和信贷风险均相同,但期限不同的债券或其他金融工具收益率的图表.纵轴代表收益率,横轴则是距离到期的时间.在此用python建模分析零息票收益率曲线,输出 ...

  2. windows清空电脑的DNS缓存

    清空电脑的DNS缓存 按"Win+R"系统热键打开"运行"窗口,进入terminal终端 输入"ipconfig /flushdns"命令后 ...

  3. SecureCR 改变背景色和文字颜色

    1.打开SecureCR链接Linux服务器,Options->Session Options->Emulation->Terminal 选择Linux (相应的服务器系统)ANSI ...

  4. 5.HTML+CSS制作一颗流星

    效果地址:https://codepen.io/flyingliao/pen/pBzKbZ HTML code: <div class="sky"> <span& ...

  5. swift便利构造函数

    class Person: NSObject { var name: String? var age: Int = 0 //1便利构造函数,允许返回nil //2本身不负责对象的创建 //3需要在调用 ...

  6. 将LinkedHashMap转换为需要的对象

    项目中,在获取json数据转换为list类型以后,本来以为可以直接使用,结果在使用中报错“java.lang.ClassCastException: java.util.LinkedHashMap c ...

  7. Dubbo+zookeeper面试题补充

    什么是分布式?什么是集群?主要区别 分布式是将一个服务分个部分,然后通过远程调用方式进行.远程调用框架RPC框架,spring cloud,dubbo.集群是将同一个服务的多个副本部署在不同的集群上, ...

  8. 使用openpyxl复制整张sheet

    通过无能的baidu逛了一圈,发现有两三段能用的代码,不过参考之下,发现还有不足的: 不能拷贝有合并格式的sheet.没有拷贝cell的相关格式(填充.边框.对齐)等参数 所以通过bing继续发掘,最 ...

  9. EntityFrameworkCore DBFirst

    需要引用如下nuget包 Microsoft.EntityFrameworkCore Microsoft.EntityFrameworkCore.SqlServer Microsoft.EntityF ...

  10. test case VS test scenario

    ---恢复内容开始--- 1. test case: how to test --如何测试 test scenario: what to  be tested  --测试什么 2. test scen ...