Android:在服务和 Activity 之间传递数据

标签 android service

所以我对如何完成整个事情感到非常困惑,我希望有人可以为我稍微分解一下。

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

我看了一遍,对正确的方法感到非常困惑,所以我有几个问题可以帮助我解决这个问题。

  1. 如果一个 Activity 创建了一个本地 SQLite 数据库,那么该应用程序的服务和 Activity 以后可以访问同一个数据库吗?

  2. 服务和 Activity 需要在同一个包中还是单独的包中?我认为不会,但出于某种原因,我记得在其他地方看到过一些关于此的内容。

  3. 我将如何进行从服务到 Activity 的数据传输?我在考虑一个内容提供商,但似乎应该有一种更简单的方法让服务只传递数据。类似于 Intent,但用于非基元。

提前致谢。

最佳答案

  1. 如果Service和Activity类在同一个包里,相信它们应该可以访问同一个私有(private)存储空间。

  2. 我会将它们放在同一个包中,因为它们是同一个整体应用程序结构的一部分。

  3. 将数据作为键值对 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/

相关文章:

java - Jsoup Element.attr() 返回意外值 (Android)

mysql - 如何在数据库中创建Service Builder的表?

安卓和 Eclipse。我必须在我的应用程序中包含服务代码吗?多个应用程序使用相同的服务

android - 具有 Intent 操作的 onStartCommand 与绑定(bind)服务

android - 添加新列表后如何在android中更新 ListView

android - TelephonyManager 为 IMEI 号码 : what can cause this? 返回 null

android Tab 图标不显示

java - 编译 Android 应用程序时第 3 方库依赖项上的 NoClassDefFoundError

android - 取回服务中的按键

ruby-on-rails - 如何将 Ruby on Rails 应用程序转换为 Windows/Linux 服务?