[android] 代码注册广播接收者利用广播调用服务的方法
利用广播调用服务里面的方法,间接的方式调用服务内部的方法,与现实中差不多,请媒体曝光
主界面里面
在界面创建的时候开启一下服务普通的startService()方法
发送一条广播出去
获取Intent对象,通过new出来
调用Intent对象的setAction()方法,参数:一般就是包名
调用sendBroadcast(intebt)方法,发送广播,参数:Intent对象
服务里面
新建一个MyService类继承系统的Service类
添加一个自定义的服务的方法callServiceMethod(),我们目的要调用的方法
新建一个内部类MyReceiver继承系统的Receiver类
广播接收者既能通过清单文件注册,也可以通过代码的方式注册,这是四大组件中唯一的特殊的一个
在MyService中创建一个MyReceiver的成员变量
在服务创建的时候,注册广播接收者,在onCreate()方法里面
调用registerReceiver(receiver,filter)方法,注册这个广播接收者,参数:receiver是BroadcastReceiver对象,通过new MyReceiver()来创建,filter是IntentFilter对象
获取IntentFilter对象,通过new出来
调用IntentFilter对象的addAction(action)方法,意图过滤器对象添加监听动作,上面发送的那个动作
当接收者收到信号的时候,会调用MyReceiver对象的onReceive()方法,在这个方法里面可以去调用服务的私有方法,比如callServiceMethod()
当服务销毁的时候,解除注册的广播接收者,在onDestroy()方法里面,调用unResisterReceiver(receiver),参数:广播接收者对象
MainActivity.java
package com.tsh.broadcallservice;import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.View;public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//开启服务Intent intent=new Intent(this,MyService.class);startService(intent);}//广播调用服务public void call(View v){Intent intent=new Intent();intent.setAction("com.tsh.broadcallservice");sendBroadcast(intent);} }
MyService.java
package com.tsh.broadcallservice;import android.app.Service; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.os.IBinder; import android.widget.Toast;public class MyService extends Service {private MyReceiver receiver;@Overridepublic IBinder onBind(Intent intent) {return null;}//服务创建的时候注册广播接收者 @Overridepublic void onCreate() {super.onCreate();receiver=new MyReceiver();IntentFilter filter=new IntentFilter();filter.addAction("com.tsh.broadcallservice");registerReceiver(receiver, filter);}//服务里面的一个方法public void callServiceMethod(){Toast.makeText(getApplicationContext(), "广播调用服务啦", 0).show();}//内部类实现广播接收者private class MyReceiver extends BroadcastReceiver{@Overridepublic void onReceive(Context context, Intent intent) {callServiceMethod();}} }
转载于:https://www.cnblogs.com/taoshihan/p/5343049.html
[android] 代码注册广播接收者利用广播调用服务的方法相关推荐
- 多态在android中(利用接口调用服务中方法)的应用
首先我们已经了解了java中多态的基本概念 1方法重载. 2向上转型,向下转型 今天我们主要讲向上转型在android中的应用范例. 在java中向上向下转型的图解: 重点:子类对象向上转型为父类对象 ...
- 利用C++调用天气webservice-gSOAP方法
利用C++调用天气webservice-gSOAP方法 首先需要下载一个gSOAP工具包 下载路径为:https://sourceforge.NET/projects/gsoap2/ 至于有关于gSO ...
- Python利用JPype调用Java对象方法【实现在Python中调用JAVA】
一.JPype简述 1.JPype是什么? JPype是一个能够让 python 代码方便地调用 Java 代码的工具,从而克服了 python 在某些领域(如服务器端编程)中的不足. 2.JPype ...
- Android屏幕旋转时Activity不重新调用onCreate的方法
2019独角兽企业重金招聘Python工程师标准>>> android屏幕旋转时Activity不重新调用onCreate的方法 当手机转屏时,Activity的onDestroy和 ...
- AjaxPro.NET使用,方便的在客户端直接调用服务端方法
(一). 运行效果如下: (二). AjaxPro.NET简介 AjaxPro.NET是一个优秀的Ajax框架, 在实际应用中只要添加其DLL引用并进行简单的配置, 即可以非常方便的在客户端直接调用服 ...
- Android通过广播接收者调用服务内方法
2019独角兽企业重金招聘Python工程师标准>>> 服务: package com.pas.callmethod;import android.app.Service; impo ...
- android+广播接收者category,广播接收者
广播接收者 Android: 系统在运行过程中,会产生很多事件,那么某些事件产生时,比如:电量改变,收发短信,拨打电话,屏幕解锁等,开机,系统会发送广播,只要应用程序接收这条广播,就知道系统发生了相应 ...
- android 引入 .so,android studio导入so文件,并调用其中的方法
在单位的项目中,需要一个算法来计算一个特殊值,可是相关的部门却不给计算公式,只是给了几个封装好的so文件和一个.h文件,让传入几个值,然后得到相应的值.拷.....没法子,人家不给,我们只好调用这个了 ...
- 客户端如何连接 DataSnap Server 调用服务的方法
一般http访问的地址是 http://localhost:8099/datasnap/rest/TServerMethods1/EchoString/abc 一.用FDConnection1连接Da ...
- Android退出程序(二)——利用广播机制
概述: 基于上一篇博客<Android退出程序(一)--单例模式>的学习,我们知道了如何利用单例和循环遍历的方式来退出我们的应用程序.这篇博客则要从另一个角度来解决问题--广播.即是,接收 ...
最新文章
- 452 Minimum Number of Arrows to Burst Balloons
- SCCM 2012系列3 安装SCCM 2012
- java定时器的使用(Timer)
- zabbix监控mysql操作
- wav格式的音频文件 16位转化成8位的
- 团队作业4——beta阶段冲刺4
- 伺服驱动器cn1引脚定义_关于三菱驱动器CN1端口的接线-专业自动化论坛-中国工控网论坛...
- 网络其他计算机无法访问,win7局域网别人无法访问我的电脑是为什么 win7其他电脑无法访问我的电脑如何修复...
- php扩展引擎手册,模板引擎-THINKPHP 5.0 手册最新版
- python技巧积累
- Android日历操作
- CoreDNS 1.9.0 openEuler 21.09 测试报告
- 保险丝选型8大考虑要素
- 给下拉框加上可输入查询特性-升级版本
- 【PTA】匿名内部类:实现Comparator比较器
- JavaScript localStorage、this、let、const
- 第六周 day6 python学习笔记
- inrul plus 90sec.php,DEDE木马后门专杀工具 针对 90sec.php 一类
- 6.进程通信 无名管道 有名管道
- QGIS教程-4:文本数据的加载
热门文章
- 求n!的位数以及求n!具体的值(C or C++)
- leetcode刷题日记-三个无重叠子数组的最大和
- 《剑指offer》面试题31——连续子数组的最大和
- IDL实现植被覆盖度计算
- ENVI/IDL实现每个波段信噪比计算
- curl header设置参数
- datagrivew删除列_c# 如何获取datagrivew 表里面名称为card_id的一列,并把这列里面的元素循环...
- KMP算法------字符串匹配问题
- 在linux中装多个mysql 服务(亲测有效)
- Log4j2 Zero Day 漏洞 Apache Flink 应对指南