效果图:

之后点击,跳转到广播接收界面:



可以看得出,广播接收界面,一直在不断的接收着在service后台工作发出的信息

然后回到上个界面等了好久之后,再打开广播接收界面:

看得出数据时一直在后台工作的!

停止Service后台计算

WorkService:

public class WorkService extends Service {private boolean isRun = true;public WorkService() {}@Overridepublic IBinder onBind(Intent intent) {// TODO: Return the communication channel to the service.throw new UnsupportedOperationException("Not yet implemented");}@Overridepublic int onStartCommand(Intent intent, int flags, int startId) {return super.onStartCommand(intent, flags, startId);}@Overridepublic void onDestroy() {isRun = false;      //  终止线程,不再发送广播消息super.onDestroy();}@Overridepublic void onCreate() {new Thread(new Runnable() {@Overridepublic void run() {int count = 0;while (isRun){Intent intent = new Intent();intent.setAction("ccv.turbosnail.broadcastdemo");           //  只有这个工程的广播接收器才能接收到信息count++;intent.putExtra("data","广播消息 " + count);sendBroadcast(intent);try {Thread.sleep(3000);} catch (InterruptedException e) {e.printStackTrace();}}}}).start();super.onCreate();}
}

ReceiverActivity.java

public class ReceiverActivity extends AppCompatActivity {MyReceiver myReceiver = new MyReceiver();@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_receiver);}@Overrideprotected void onResume() {super.onResume();                                   //  注册自定义广播接收器IntentFilter intentFilter = new IntentFilter();intentFilter.addAction("ccv.turbosnail.broadcastdemo");registerReceiver(myReceiver,intentFilter);}@Overrideprotected void onPause() {super.onPause();unregisterReceiver(myReceiver);                 //  关闭广播接收器}public class MyReceiver extends BroadcastReceiver{@Overridepublic void onReceive(Context context, Intent intent) {String data = intent.getStringExtra("data");            //  接收广播信息Toast.makeText(ReceiverActivity.this,data,Toast.LENGTH_LONG).show();}}}

MainActivity.java

public class MainActivity extends AppCompatActivity implements View.OnClickListener {private Button btnStart,btnReceiver,btnStop;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);initView();}private void initView() {btnStart = findViewById(R.id.btn_Start);btnReceiver = findViewById(R.id.btn_Receiver);btnStop = findViewById(R.id.btn_Stop);btnStart.setOnClickListener(this);btnReceiver.setOnClickListener(this);btnStop.setOnClickListener(this);}@Overridepublic void onClick(View v) {switch (v.getId()){case R.id.btn_Start:Intent intent = new Intent(MainActivity.this,WorkService.class);startService(intent);        //  使用 startServic 方式 启动服务Toast.makeText(MainActivity.this,"Service 启动,开始广播",Toast.LENGTH_LONG).show();break;case R.id.btn_Receiver:Intent intent1 = new Intent(MainActivity.this,ReceiverActivity.class);startActivity(intent1);break;case R.id.btn_Stop:Intent intent2 = new Intent(MainActivity.this,WorkService.class);stopService(intent2);Toast.makeText(MainActivity.this,"Service 停止,停止广播",Toast.LENGTH_LONG).show();break;}}
}

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"tools:context=".MainActivity"><Buttonandroid:id="@+id/btn_Start"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center"android:text="    启动 Service 定时发送广播    "android:layout_marginTop="80dp"android:textSize="17dp"/><Buttonandroid:id="@+id/btn_Receiver"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center"android:text="          跳转到广播接收界面          "android:layout_marginTop="80dp"android:textSize="17dp"/><Buttonandroid:id="@+id/btn_Stop"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center"android:text="    关闭 Service 停止发送广播    "android:layout_marginTop="80dp"android:textSize="17dp"/></LinearLayout>

activity_receiver.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".ReceiverActivity"></android.support.constraint.ConstraintLayout>

如果有问题,可以联系我qq:1787424177

最后,我真诚的希望能评论一句嘛,让我知道你来过,我会很开心的

Android BroadcastReceiver(二)相关推荐

  1. Android BroadcastReceiver总结

    #BroadcastReceiver综述 广播接收器,顾名思义,用来接收广播的. 一个广播关联两个角色,广播发送方.广播接收方,BroadcastReceiver是接收方角色. 广播发送方可以是应用内 ...

  2. android camera(二):摄像头工作原理、s5PV310 摄像头接口(CAMIF)

    关键词: android  camera CMM 模组 camera参数  CAMIF 平台信息: 内核: linux 系统: android 平台:S5PV310(samsung exynos 42 ...

  3. Android BroadcastReceiver中播放提示语音有时失效问题

    Android BroadcastReceiver 千万不要做耗时的操作,如果有耗时的操作,请让OnReceive 中调用service. @Override public void onReceiv ...

  4. Android BroadcastReceiver示例教程

    Today we'll discuss and implement Android BroadcastReceiver that is a very important component of An ...

  5. android p ify 三星,Enjarify - Android逆向(二)

    Enjarify - Android逆向(二) 首先奉上enjarify的Github地址,小伙伴们可以clone到本地使用哦 Enjarify介绍 上一节我们说了,在开发Android应用时,And ...

  6. 从斗鱼Android开发二面被刷,到VR微创公司收留,我的NDK开发梦究竟缺了什么

    APP如何 瘦身? 自定义控件要重写哪些方法? 安卓中哪些地方用到了设计模式?使用到的是什么模式? 使用过注解吗? 如何自定义注解? 看过Android的源码吗? 如何在链表中判断是否存在环?(快慢指 ...

  7. 2020.8.13 京东Android开发二面

    本次面试着重考察了计算机基础知识,Android相关均未涉及,及时暴露了我的一些漏洞,时间尚早,尽快补上来吧. 2020.8.13 京东Android开发二面 问题 聊项目 用过哪些数据库 数据库索引 ...

  8. Android 自定义二维码

    Android生成二维码使用的是zxing. 1.加入依赖,或者自己选择zxing版本:Releases · zxing/zxing · GitHub dependencies {...impleme ...

  9. 2020.8.25 斗鱼Android开发二面面经

    本次面试全是开发技术相关问题,暴露了我只具备基础知识,开发经验不足的问题,希望自己以后抓紧推进后续学习,早日补上漏洞. 斗鱼Android开发二面面经 面试问题 自我介绍 疫情期间的学习安排 介绍一下 ...

  10. Android实现二维码扫描功能(四)-ZXing识别图片二维码,相册选图

    简介 上一篇 Android实现二维码扫描功能(三)-闪光灯控制介绍了光线较弱情况下开启闪光灯来辅助二维码识别的方法. 本篇我们介绍如何识别相册中的图片(含二维码) 动态演示 使用模拟器录制了动画演示 ...

最新文章

  1. 浅谈loadrunner中pacing设置
  2. 肖鹏:微博数据库那些事儿(图灵访谈)
  3. 04Hadoop中的setPartitionerClass/SortComparator/GroupingComparator问题
  4. 5.4寸iPhone 12真机曝光:可单手握住的快乐!
  5. 流媒体地址文件制作方法
  6. Jersey客户端API调用REST风格的Web服务
  7. 利用PROMPT_COMMAND记录每个用户执行命令的时间ip等信息。
  8. python爬虫淘宝评论图片_淘宝上的图片是怎么被爬取的
  9. 学校计算机学院教学管理ER图,学校课程管理ER图
  10. sms实现wap push的方法和格式
  11. 如何用计算机函数计算房租,Excel商铺租金模板,租金每两年递增5%,具备收租期、租赁起止期、单价函数自动计算功能...
  12. dispatch_apply快速迭代
  13. Python数据获取——图片数据提取
  14. 虎牙直播怎么换html5,虎牙直播怎么换徽章-虎牙直播更换粉丝徽章的方法 - 河东软件园...
  15. 0004-1-模型好坏评判标准
  16. 计算机硬件综合实验六:CPU组成与机器指令执行实验
  17. 数据分析师必备技能之PowerBI教程
  18. c语言已知加速度求位移速度,知道初速度知道加速度求位移的公式
  19. Windows Defender内核隔离无法关闭,提示此设置由管理员进行管理
  20. 超详细的商业智能BI知识分享,值得收藏

热门文章

  1. window docker TensorFlow环境搭建
  2. Gazebo Ros入门
  3. 获取批量导入数据后,所产生所有自增ID的值
  4. css中的expression
  5. 用于MPEG视频流的使能服务质量中间件
  6. 当自监督遇上语言-图像预训练,UC伯克利提出多任务框架SLIP
  7. NeurIPS'21 | 谷歌魔改Transformer!一层8个token比1024个还好用!
  8. 【招聘】浙江大学杨杰课题组-博士后招聘-医学人工智能
  9. 【面经】回顾19秋招面经
  10. 【从 0 开始机器学习】手把手用 Python 实现梯度下降法!