Android 试图让我的应用与本地服务通信

Posted

技术标签:

【中文标题】Android 试图让我的应用与本地服务通信【英文标题】:Android trying to get my app to talk to a local service 【发布时间】:2011-04-29 14:44:53 【问题描述】:

我在本地创建了一个服务,想知道是否有办法调用它的方法。我正在考虑使用流套接字并让客户端向服务发送消息,但这似乎需要做很多工作。 我必须创建服务的代码

public class Welcome extends Activity implements OnClickListener
    private static final int NOTIFY_ME_ID=1337;
    private Timer timer=new Timer();
    private int count=0;

    @Override
    public void onCreate(Bundle savedInstanceState) 
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

         // set up buttons
        View mAppoitment = findViewById(R.id.appoitment);
        mAppoitment.setOnClickListener(this);

    // start background thread
        Log.v("TED:", "Starting thread");
        startService(new Intent(Welcome.this,
                BackgroundService.class));

泰德

【问题讨论】:

向服务发送Intent。服务应该注册一个广播接收器来接收特定的意图。 【参考方案1】:

您可能需要考虑从服务中公开 AIDL 接口。有关更多详细信息和示例,请参阅此处的文档:http://developer.android.com/guide/developing/tools/aidl.html

另一种选择是让服务注册一个广播接收器并向其发送 Intent。

【讨论】:

【参考方案2】:

您可以查看以前的答案:Android: Passing a Service a Handler。

Messenger 接口绕过 AIDL 复杂性(有点):http://developer.android.com/reference/android/app/Service.html#RemoteMessengerServiceSample

一般我已经使用了ServiceConnection并传递了一个Handler实例:你可以在http://developer.android.com/reference/android/app/Service.html#LocalServiceSample看到如何使用ServiceConnection

【讨论】:

以上是关于Android 试图让我的应用与本地服务通信的主要内容,如果未能解决你的问题,请参考以下文章

Android:如何与本地服务通信和交换对象?

如何让我的Lambda函数与在本地计算机上运行的服务器通信?

Android 09 服务 使用服务进行本地进程通信

Android客户端与本地服务器Socket通信

Android中Service服务都有哪些?

如何从不同网络上的android连接到本地apache服务器?(端口转发)