所以我对如何完成整个事情感到非常困惑,我希望有人可以为我稍微分解一下。
我有一项服务应该始终运行,并且在某些时候它需要提醒用户某项任务即将完成(可能通过通知栏图标)。当用户接受任务时,服务需要查看本地数据库,构造一些非原始对象,并将它们交给它刚刚启动的 Activity 。
我看了一遍,对正确的方法感到非常困惑,所以我有几个问题可以帮助我解决这个问题。
如果一个 Activity 创建了一个本地 SQLite 数据库,那么该应用程序的服务和 Activity 以后可以访问同一个数据库吗?
服务和 Activity 需要在同一个包中还是单独的包中?我认为不会,但出于某种原因,我记得在其他地方看到过一些关于此的内容。
我将如何进行从服务到 Activity 的数据传输?我在考虑一个内容提供商,但似乎应该有一种更简单的方法让服务只传递数据。类似于 Intent,但用于非基元。
提前致谢。
最佳答案
如果Service和Activity类在同一个包里,相信它们应该可以访问同一个私有(private)存储空间。
我会将它们放在同一个包中,因为它们是同一个整体应用程序结构的一部分。
将数据作为键值对 bundle 到 Intent 的 extras 中并启动 Activity。
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");
关于Android:在服务和 Activity 之间传递数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3747448/