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

Fue*_*ers 18 service android

所以我对如何做到这一切感到非常困惑,我希望有人可以为我分解一下.

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

我已经看了很多,并且对于一个正确的方法感到非常困惑所以我有几个问题可以帮助我绕过它.

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

  2. 服务和活动是否需要在相同或单独的包中?我想不会,但出于某种原因,我记得在其他地方看到过这个.

  3. 如何从服务到活动进行数据传输?我在想一个内容提供商,但似乎应该有一种更简单的方法让服务只是交出数据.类似于Intent但非基元.

提前致谢.

mag*_*aio 12

  1. 如果Service和Activity类在同一个包中,我相信它们应该能够访问相同的私有存储空间.

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

  3. 将数据捆绑为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");
Run Code Online (Sandbox Code Playgroud)

  • 如果两个包都不一样应该怎么办? (6认同)
  • @Nirav:Intent intent = new Intent(this,com.example.somepackage.SecondActivity.class); (2认同)