android - Android服务和 Activity 之间使用监听器的通信

标签 android service android-activity communication

我看到的大多数 Activity 和服务之间的通信示例都使用 BroadcastReceiver。我的问题是我可以用普通的听众替换广播接收器吗?然后我不必担心将我的 Web 服务响应编码到 Intent/Bundle 类中。这种方法有什么问题吗?还有什么比使用 BroadcastReceiver 更不利的吗? AddListener 将在 Activity 的 onCreate 方法中调用,RemoveListener 将在 Activity 的 onDestroy 方法中调用。

package com.example.test;

import java.util.ArrayList;
import java.util.List;

import android.app.IntentService;
import android.content.Intent;

public class AsyncService extends IntentService
{
    static List<WebServiceListener> listeners = new ArrayList<WebServiceListener>();

    public static void addListener(WebServiceListener listener)
    {
        listeners.add(listener);
    }

    public static void removeListener(WebServiceListener listener)
    {
        listeners.remove(listener);
    }

    public AsyncService(String name)
    {
        super(name);
    }

    @Override
    protected void onHandleIntent(Intent intent)
    {
        try
        {
            Thread.sleep(5000); //simulate calling webservice
        }
        catch (Exception e)
        {
            //
        }

        WebServiceResponse response = new WebServiceResponse();
        response.status = "SUCCESS";

        for (WebServiceListener listener : listeners)
        {
            listener.onReceiveResult(response);
        }
    }
}

最佳答案

如果是本地服务,是的,你可以这样做

关于android - Android服务和 Activity 之间使用监听器的通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18674867/

相关文章:

java - Android 线程、锁、并发示例

android - 查杀服务查杀重复报警

c++ - Windows 服务不捕获关闭事件 C/C++

java - 让用户输入新 Activity 的名称

java - 从另一个 Activity 更新数据 fragment

java - 网页不可用 - 在 Android 上加载本地 HTML

android - fragment 中的 onBackPressed()

同一包中两个 Activity 之间的Android链接

java - Android - 确定短信文本限制

java - 如何在java中正确实现端口监听器作为服务?