android 实现自定义监听接口,Android应用程序上的自定义事件监听器

Android应用程序上的自定义事件监听器

我需要设置一个简单的事件侦听器,以不时刷新Handler。 问题是我不知道如何生成事件。

我知道,对于诸如按键或按钮按下之类的事件,我只需要实现Handler。但是在这种特定情况下,我实际上需要生成事件,每次我的应用程序的另一个运行线程唤醒并刷新其列表时,都会触发该事件。 RSS Feed中的新闻。

我已经做了所有事情,但是被困在这里。 我可以得到任何建议或链接,以获得有关如何实现此目的的更多信息吗?

4个解决方案

90 votes

定义一个回调接口

....

.registerListener

(

new OnNewsUpdateListener() {

onNewsUpdate() {

// process news data

runOnUIThread(new Runnable() {

public void run() {

// refresh list view

}

}

}

}

....

在后台线程上提供注册工具,以获取RSS feed

....

.registerListener

(

new OnNewsUpdateListener() {

onNewsUpdate() {

// process news data

runOnUIThread(new Runnable() {

public void run() {

// refresh list view

}

}

}

}

....

有消息时触发回调

....

.registerListener

(

new OnNewsUpdateListener() {

onNewsUpdate() {

// process news data

runOnUIThread(new Runnable() {

public void run() {

// refresh list view

}

}

}

}

....

在初始化期间在某处注册侦听器

....

.registerListener

(

new OnNewsUpdateListener() {

onNewsUpdate() {

// process news data

runOnUIThread(new Runnable() {

public void run() {

// refresh list view

}

}

}

}

....

Sameer answered 2020-08-06T02:10:36Z

28 votes

试试这个:

interface MyHandlerInterface

{

void onHandle(Object obj)

}

class myListClass

{

MyHandlerInterface myHandler;

public void setHandlerListener(MyHandlerInterface listener)

{

myHandler=listener;

}

protected void myEventFired(myObj)

{

if(myHandler!=null)

myHandler.onHandle(myObj);

}

}

Hojjat answered 2020-08-06T02:10:56Z

3 votes

听起来您需要一个Handler-(查找android.os.Handler以获取详细信息)。

sendMessageDelayed方法将允许您安排将消息发送到处理程序的时间。

快速搜索找到了一个可以使您入门的完整示例:[http://www.tutorialforandroid.com/2009/01/using-handler-in-android.html]

Colin Stewart answered 2020-08-06T02:11:25Z

2 votes

您可以使用android生命周期。

创建一个信号接口,又名您的事件

interface NewsUpdateSignal{

void newsUpdateHandler(Mydata data);

}

比在您的活动中或您想要的其他任何地方注册时,可能会有许多Signal的收听者。

class MyActivity extends Activity implements NewsUpdateSignal{

Signal newsUpdateSignal = SignalsBag.inject(NewsUpateSignal.class);

@Override

protected void onCreate(Bundle savedInstanceState) {

newsUpdateSignal.addListener(this);

}

@Override

public void newsUpdateHandler(final Mydata data){

//Do something here

}

}

并在需要时从任何地方发送信号。

Class A{

Signal newsUpdateSignal = SignalsBag.inject(NewsUpateSignal.class);

void execute(){

// obtain the data somehow, and dispatch it, the callback will be invoked on the same thread

newsUpdateSignal.dispatcher.newsUpdateHandler(data);

}

}

免责声明:我是android生命周期的作者。

Ilya Gazman answered 2020-08-06T02:12:02Z

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值