2 qq 30130435 qq_30130435 于 2016.02.17 16:59 提问

Android中能在一个自定义view中注册广播并发出广播吗

我写的一个Android程序中自定义了一个view,自己画了一个钟表,那个钟表可以调时间,因为调时间的过程中数据是不停的变化的,我想让这变化不停的时间显示在自定义view底下的TextView,虽然我写了一个get方法得到时间并显示在textView中,到get方法只执行了一次,所以并没有变化更新效果,所以我想法是在自定义view中发送广播,只要是表在调整就一直发送最新数据,可是好广播一直报错,是不是广播只能在activity中才能发送,或者各位大神有更好的思路吗?

6个回答

leilba
leilba   Rxr 2016.02.17 17:09
已采纳

可以在view里面发广播的,,
view里面不是有一个:public ViewName(Context context){} 这种类型的构造方法吗?
这个Context就是activity,你可以将这个context保存下来。
当你需要发广播的话,可以调用:context.sendBoradCast(..)来发送广播。

qq_30130435
qq_30130435 谢谢!
2 年多之前 回复
leilba
leilba 回复qq_30130435: 而且就像其他人说的那样,用广播的话不是最优的方法,最好是用回调,有时间的话你可以学一下,给你个参考:http://www.cnblogs.com/tt_mc/archive/2011/11/09/2243699.html
2 年多之前 回复
leilba
leilba 回复qq_30130435: view的构造方法有很多个,你如果是把View放在layout里面的话,那么调用的方法函数是 public ViewName(Context context,AttributeSet attrs){} 这个构造方法
2 年多之前 回复
qq_30130435
qq_30130435 我今晚试了下,放在这个构造方法里的context.sendbroadcast()虽然编译无错,但我检查后发现写在里面的任何方法都不会执行,我应该如何写,Android新手,还请指教
2 年多之前 回复
qq_30130435
qq_30130435 十分感谢!已经可以调用sendbroadcast
2 年多之前 回复
gary16
gary16   2016.02.17 17:07

--------------------应该可以的

qq_26787115
qq_26787115   2016.02.17 17:12

可以的,用context

luochoudan
luochoudan   Ds   Rxr 2016.02.17 17:19

1 用回调试试
2 广播比较重量级,频繁发送不是一个好的选择,但是肯定行,它的引用主体是Context,不局限于Activity。

qq_30130435
qq_30130435 好的!感谢提议!
2 年多之前 回复
qq_17250009
qq_17250009   2016.02.17 20:10

重量级广播不太合适,建议在重绘的时候使用接口回调,参数是当前事件

qq_30130435
qq_30130435 好的谢谢!回调我并不熟悉,接触Android不久,还得好好学习。
2 年多之前 回复
Mr_dsw
Mr_dsw   Ds   Rxr 2016.02.17 20:20

可以发送广播,需要关联对应的context上下文

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
android广播注册简单用法
注册广播有两种方法:动态注册(在代码中注册),静态注册(AndroiMainfest.xml)。 实现注册你需要指明:要监听什么广播,和监听之后要做什么动作(自定义广播重写onReceive)。 举一个监听网络变化的例子 要监听的广播是:"android.net.conn.CONNECTIVITY_CHANGE" 收到此广播之后我们要发一个通知(Toast) 1.动态注册:
android的广播介绍,在manifest .xml中注册广播
Android 中有各式各样的广播,各种广播在Android 系统中运行,当系统/应用程序运行时便会向 Android 注册各种广播,我们所要做的就是注册感兴趣的广播,然后做相应的处理。 1,第一种注册广播的方式,在manifest .xml清单文件中注册 1.1这里首先自定义一个广播发送者 public class BroadCastActivity extends Activit
关于在AndroidManifest.xml注册的广播和activity使用回调的问题
1.在平常项目中,有时候需要广播去通知及时修改aitivity的需求 1.而这个时候并不能使用回调进行处理,因为xml注册的广播,会不止一个实列,从而导致activity实例化回调监听无效,爆出空指针异常 2.其实我们可以使用动态注册广播,然后通过回调进行处理。但是偏离了我们的需求 3.所以其实我们可以通过使用eventbus,这个第三方来达到我们的需求 2.以下是eventbus使用方法
广播静态注册多个action,scheme导致的冲突
本篇博客仅记录项目中遇到的广播注册多个不同事件遇到广播失效问题在项目有个需求需要注册一个广播用于监听系统开关机、应用卸载安装以及一个项目中自定义action事件,开发过程中将这些事件静态注册到了一个intent-filter中,如下图所示结果运行起来发现只能接收到系统安装卸载应用事件,前三个注册的开关机以及自定义广播事件都无法收到了。 后来怀疑是加了导致的,去掉后果不其然,开关机和自定义事件都能接收
Android 取消静态注册的BroadcastReceiver
大家都知道,关于Android广播事件的注册有两种方式,一种是在代码中静态注册,一种呢是写在Manifest中的静态注册,在这我就不跟大家罗嗦,如何 静态注册,如何动态注册了,相信大家也知道。 大家有没有考虑过这个问题,但用户设置不要监听这个广播了,该如何是好的。 最简单的方法就是还是照样监听,只不过收到广播之后不再执行对应的动作了,对用户来说,就跟没监听到广播一样,那么还有其他
Android进阶之路 - BroadcaseReceiver(自定义广播、有序广播、无序广播、广播拦截、动态注册、静态注册)的详细使用方式
众所周知BroadcaseReceiver为Android中的四大组件之一,又名为广播、喇叭,这篇我为大家带来的就是BroadcaseReceiver的详细使用方式,说到使用其中又有些许不同,下面为大家进行讲解广播分为俩种俩式:1.有序广播(可拦截) 2.无序广播(不可拦截)1.动态注册(代码注册) 2.静态注册(清单注册)使用方式与注意点:1.MainActivity主代码与各个接收者代码
android注册广播的两种方式与区别
Android广播分为两个方面:广播发送者和广播接收者,通常情况下,BroadcastReceiver指的就是广播接收者(广播接收器)。广播作为Android组件间的通信方式,可以使用的场景如下:
三种广播,以及广播接收器的注册方式
广播有三种: 1.普通广播,只是普通的广播,接受顺序按配置的优先级接受,只有注册了对应的过滤器的接收器才能接受。 2.有序广播,接受顺序按配置的优先级接受,只有注册了对应的过滤器的接收器才能接受,接收器可以截断广播,排在后面的接收器接收不到广播。 3.粘性广播,已经被弃用了,广播发送后一直留在AMS中,即使是在粘性广播发送后再注册的接收器还是可以接收到粘性广播,这样的话该广播是不会停止的,只
发送自定义广播 之 标准广播
之前章节介绍了,如何接收广播。本章节介绍,如何发送自定义的广播,并接收到它。 本章节实现,在程序界面上,通过点击一个按钮发送出一条广播,程序的广播接收器同时接收到该条广播,并弹出接收到该条广播的提示信息。
Android中如何做到自定义的广播只能有指定的app接收
今天没吊事,又去面试了,具体哪家公司就不说了,因为我在之前的blog中注明了那些家公司的名字,结果人家给我私信说我泄露他们的题目,好吧,我错了。。。其实当我们已经在工作的时候,我们可以在空闲的时间去面一面,因为面试有很多好处的:第一点:你知道这个公司的具体地址了,以后和朋友说的时候也是有话题的第二点:这点很重要,看看其他公司的面试题(现在有的公司还在采用笔试题这个环节,真心无语了,题目全是从网上找