博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android -- 利用Broadcast开启Service
阅读量:6501 次
发布时间:2019-06-24

本文共 1995 字,大约阅读时间需要 6 分钟。

Broadcast和Service都是Android四大组建之一的。

这里的广播是动态的,自己注册的一个广播。

这种最典型的用法就是利用开机广播,然后再起自己的服务,也就是在Android手机中做到开启启动。

Service与Broadcast                                                                

public class MyService extends Service {    private MyReceiver receiver;    @Override    public IBinder onBind(Intent intent) {        // TODO 自动生成的方法存根        return null;    }    private void methodInService() {        Toast.makeText(this, "我是服务的方法", Toast.LENGTH_LONG).show();    }    @Override    public void onCreate() {        receiver = new MyReceiver();        IntentFilter filter = new IntentFilter();        filter.addAction("com.yydcdut.braodcasttoservice");        registerReceiver(receiver, filter);        super.onCreate();    }    private class MyReceiver extends BroadcastReceiver {        @Override        public void onReceive(Context context, Intent intent) {            System.out.println("我是service内部的广播接收者!!");            methodInService();        }    }    @Override    public void onDestroy() {        unregisterReceiver(receiver);        receiver = null;        super.onDestroy();    }}

这里的MyReceiver是一个内部类,没有在AndroidManifest.xml中注册这个组建,那么就需要执行注册广播这个动作。

receiver = new MyReceiver();        IntentFilter filter = new IntentFilter();        filter.addAction("com.yydcdut.braodcasttoservice");        registerReceiver(receiver, filter);

IntentFilter也就与Manifest里面的相同。也注册也就有注销,当这个服务Destroy的时候就注销掉广播。

MainActivity                                                                          

public class MainActivity extends Activity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        Intent intent = new Intent(this,MyService.class);        startService(intent);    }    //Button    public void call(View view)    {        Intent intent = new Intent();        intent.setAction("com.yydcdut.braodcasttoservice");        sendBroadcast(intent);    }}

com.yydcdut.braodcasttoservice这个前后呼应,广播就找到了这个Action。

我是天王盖地虎的分割线                                                               

源代码:

利用广播调用服务的方法.zip

 

 

本文转自我爱物联网博客园博客,原文链接:http://www.cnblogs.com/yydcdut/p/3810001.html,如需转载请自行联系原作者

你可能感兴趣的文章
mysql批量数据多次查询数据库_mysql数据库批量操作
查看>>
jquery 乱码 传参_jquery获取URL中参数解决中文乱码问题的两种方法
查看>>
JDBC_MySQL_jdbc连接mysql_MySQL
查看>>
新手学习python零基础_新手零基础学习Python第一步,搭建开发环境!
查看>>
mysql cte的好处_Mysql 8 重要新特性 - CTE 通用表表达式
查看>>
zcu106 固化_xilinx zcu106 vcu demo
查看>>
java 打印万年历_Java基础之打印万年历
查看>>
java ftpclient 代码_java后台代码ftpclient下载文件
查看>>
java mina 长连接_MINA实现TCP长连接(二)——服务端实现
查看>>
java数据库生成model_继承BaseModelGenerator 生成Model时添加数据库表字段 生成代码示例...
查看>>
https redirects java_java HttpURLConnection 得到 Redirect 转向的例子
查看>>
java读取html文件并替换_java读取html并替换相关内容
查看>>
java面向对象的概念_java面向对象(上)-- 面向对象的概念
查看>>
dbscan算法python实现_Python实现DBScan
查看>>
java智能聊天软件_Java使用青云客智能聊天接口做一个小助手
查看>>
java定义player类_Java自定义一个异常类NoThisSongException和Player类
查看>>
java 字符串 算法 面试题_java笔试手写算法面试题大全含答案
查看>>
java内部类访问外部类变量 final_Java内部类引用外部类中的局部变量为什么必须是final问题解析...
查看>>
java编程思想第四章_《JAVA编程思想》学习笔记——第四章 控制执行流程
查看>>
java 栈帧与类的关系_深入理解Java虚拟机之类运行时栈帧结构
查看>>