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