Android:在特定流程和活动

时间:2016-07-12 08:55:11

标签: android android-service android-annotations android-service-binding

如何在特定进程中运行的服务与Android应用程序的其余部分之间共享对象?

在我的清单中,我将process="com.test.myprocess"设置为服务声明。

当我的用户在应用程序上登录时,我初始化了一个“会话”对象。然后我启动Android服务,并使用Android Annotation将会话对象注入其中。但是当我在我的服务中注入会话session.getUuid()时,我总是得到“null”。

如果我在与我的应用程序相对应的过程中执行相同操作(例如在UiThread中),则该值不为空。

由于

2 个答案:

答案 0 :(得分:0)

要将对象从Service发送到Activity,我建议您使用以下功能:

public void sendBroadcast(Intent intent);

创建一个合适的Intent,放置你的变量或额外的对象。您的对象必须实现Serialisable接口。如果它无法将其序列化为JSON并传递字符串。像这样:

Intent intent = new Intent();
intent.setAction("UNIQUE_BROADCAST_ID");
intent.putExtra("EXTRA_ID", ...);
this.sendBroadcast(intent);

Activity注册BroadcastReceiver并注明具体代码:

registerReceiver(receiver, new IntentFilter("UNIQUE_BROADCAST_ID"));

答案 1 :(得分:0)

你绑定了服务吗?你可以学习一些关于AIDL的知识。类对象只属于一个进程,因此当您使用Annotation在另一个进程中获取会话对象时,结果为null。