如何在特定进程中运行的服务与Android应用程序的其余部分之间共享对象?
在我的清单中,我将process="com.test.myprocess"
设置为服务声明。
当我的用户在应用程序上登录时,我初始化了一个“会话”对象。然后我启动Android服务,并使用Android Annotation将会话对象注入其中。但是当我在我的服务中注入会话session.getUuid()
时,我总是得到“null”。
如果我在与我的应用程序相对应的过程中执行相同操作(例如在UiThread中),则该值不为空。
由于
答案 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。