Android:在服务和活动之间传递数据
所以我对如何做这件事情感到非常困惑,我希望有人能够为我分解一点点。Android:在服务和活动之间传递数据
我有一个应该始终运行的服务,并且在某些时候需要提醒用户任务要完成(可能通过通知栏图标)。当用户接受任务时,服务需要查看本地数据库,构建一些非原始对象,并将它们提供给它刚刚启动的活动。
我已经看了一遍,并得到了一个正确的方法非常困惑,所以我有几个问题,以帮助我把我的头围绕它。
如果活动能的那应用接入服务和活动,同一个数据库后创建一个本地SQLite数据库?
服务和活动是否需要在相同或不同的包中?我想不会,但由于某种原因,我记得在其他地方看到这方面的情况。
我该如何处理从服务到活动的数据传输?我在想一个内容提供商,但似乎应该有一种更简单的方式让服务交付数据。类似于意图,但对于非基元。
在此先感谢。
如果Service和Activity类在同一个包中,我相信他们应该能够访问相同的私有存储空间。
我会把它们放在同一个包中,因为它们是同一个整体应用程序结构的一部分。
将数据捆绑到Intent的额外项中作为键值对并启动活动。
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");
在相同的应用程序,服务和活动可以访问相同的SQLite数据库。我建议使用一个SQLite数据库。为简单起见,请将您的服务连接设置为本地服务,因此您不需要AIDL接口和进程间通信。
从服务中,通知用户,使用NotificationManager。你可以将一个可序列化的对象从你的服务传递给一个intent,然后传递给开始的activity,但我建议改为传递一个db ID。
我们已经构建了一个新的Android ORM工具,您可以使用它。它包括可用于构建应用程序的原型Activity和Service类。我还没有一个使用该服务的示例应用程序,但我将在下一个代码中进行编码并尽快完成。
看看...
而且我的博客?
我目前正在做一些相当沉重的分贝的东西,在我工作的应用程序。服务会检查服务器是否有更新,并基本上做你想要做的事情。它的所有非常简单的东西。
更新!我创建了一个示例应用程序,其中包含一个“执行”的服务。我还没有把它放到svn仓库中,但是你可以下载它并且给它旋转。小心。没有“关闭”按钮的服务... http://www.kagii.com/downloads/NotifyService.tar.gz – 2010-09-20 01:42:01
如果两者都不在同一个包装中,该怎么办? – Nirav 2011-12-10 13:15:03
@Nirav:Intent intent = new Intent(this,com.example.somepackage.SecondActivity.class); – 2014-07-07 10:24:25