使用监听器在Android服务和活动之间进行通信

使用监听器在Android服务和活动之间进行通信,android,service,android-activity,communication,Android,Service,Android Activity,Communication,我看到的活动和服务之间通信的大多数示例都使用广播接收器。我的问题是我能用一个普通的听众来代替广播接收机吗?这样,我就不必担心将web服务响应封送到Intent/Bundle类中。这种方法有什么问题吗?有什么比使用广播接收器更不利的吗?AddListener将在活动的onCreate方法中调用,RemovelListener将在活动的onDestroy方法中调用 package com.example.test; import java.util.ArrayList; import java.u

我看到的活动和服务之间通信的大多数示例都使用广播接收器。我的问题是我能用一个普通的听众来代替广播接收机吗?这样,我就不必担心将web服务响应封送到Intent/Bundle类中。这种方法有什么问题吗?有什么比使用广播接收器更不利的吗?AddListener将在活动的onCreate方法中调用,RemovelListener将在活动的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);
        }
    }
}
package com.example.test;
导入java.util.ArrayList;
导入java.util.List;
导入android.app.IntentService;
导入android.content.Intent;
公共类AsyncService扩展了IntentService
{
静态列表侦听器=新的ArrayList();
公共静态void addListener(WebServiceListener侦听器)
{
添加(侦听器);
}
公共静态void removeListener(WebServiceListener侦听器)
{
删除(侦听器);
}
公共异步服务(字符串名称)
{
超级(姓名);
}
@凌驾
受保护的手部内容无效(意图)
{
尝试
{
Thread.sleep(5000);//模拟调用webservice
}
捕获(例外e)
{
//
}
WebServiceResponse响应=新的WebServiceResponse();
response.status=“成功”;
for(WebServiceListener侦听器:侦听器)
{
侦听器。onReceiveResult(响应);
}
}
}

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

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