首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Android:在服务和活动之间传递数据

Android:在服务和活动之间传递数据
EN

Stack Overflow用户
提问于 2010-09-20 04:57:08
回答 2查看 28.1K关注 0票数 18

所以我真的对如何做这整个事情感到困惑,我希望有人能为我分析一下。

我有一个应该始终运行的服务,在某些时候,它需要提醒用户某个任务即将完成(可能是通过一个通知栏图标)。当用户接受任务时,服务需要查看本地数据库,构造一些非原语对象,并将它们提供给刚刚启动的活动。

我已经看了一遍,对于正确的方法感到非常困惑,所以我有几个问题来帮助我理解它。

  1. 如果某个活动创建了本地SQLite数据库,则该应用程序的服务和活动以后是否可以访问该数据库?
  2. 该服务和活动是否需要位于相同或独立的包中?我想没有,但出于某种原因,我记得我在其他地方看到过,

  1. ,我该如何做从服务到活动的数据传输呢?我考虑的是内容提供商,但似乎应该有一种更简单的方式让服务只传递数据。类似于Intent,但用于非原语。

提前谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-09-20 05:56:07

  1. 如果服务类和活动类在同一个包中,我相信它们应该能够访问相同的私有存储空间。
  2. 我会将它们放在同一个包中,因为它们是同一整体应用程序的一部分,将数据放入意图的额外键值对中并启动活动。

代码语言:javascript
复制
Intent intent = new Intent(this, SecondActivity.class);
Bundle b = new Bundle();

// see Bundle.putInt, etc.
// Bundle.putSerializable for full Objects (careful there)
b.putXXXXX("key", ITEM);  
intent.putExtras(b);
startActivity(intent);

// -- later, in Activity
Bundle b = this.getIntent().getExtras();
int i = b.getInt("key");
票数 12
EN

Stack Overflow用户

发布于 2010-09-20 09:04:25

在同一应用程序中,服务和活动可以访问相同的Sqlite数据库。我建议使用sqlite db。为简单起见,将您的服务连接设置为本地连接,这样就不需要AIDL接口和进程间通信之类的东西。

在服务中,要通知用户,请使用NotificationManager。您可以将可序列化对象从服务传递到意图,然后传递到启动的活动,但我建议改为传递db ID。

我们已经构建了一个新的Android ORM工具,您可以使用它来完成此任务。它包括可用于构建应用程序的原型、活动和服务类。我还没有一个使用该服务的示例应用程序,但我将在下一步对其进行编码,并尽快将其上线。

你看..。

http://ormlite.com/

我的博客..。

http://touchlabblog.tumblr.com/

我目前在我正在开发的应用程序中做了一些相当繁重的db工作。服务检查服务器是否有更新,实际上是做你想做的事情。这都是非常简单的事情。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3747448

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档