2012-10-12 778 views
0

如果我了解Android手册,BroadcastReceiver被视为无状态实体,所以我应该保留一个服务作为数据容器(这些是我的结论)。如何在BroadcastReceiver中保存和访问数据?

中为每个数据访问我应该执行startService每个请求(?) - 我可以用这种方式传递数据服务,但如何找回数据?

我的意思是在推荐的方式?我可以考虑传递“out”数据,完成服务会改变它,所以当startService返回时,我可以检查我发送的数据以检索结果。

回答

2

如果我理解Android手册,BroadcastReceiver被视为无状态实体,所以我应该保留一个服务作为数据容器(这是我的结论)。

有一项专门用于保存数据的服务会让您的用户不喜欢您,并且无法保证数据会坚持到底。用户和操作系统可以随时随地摆脱您的流程。

请使用用于保存需要过程调用之间的生存数据文件(例如,数据库,SharedPreferences)。

+0

无论如何,它有一个服务,因为它首先推出了接收器。 – greenoldman

+1

@macias:如果通过“它启动接收器”,您的意思是服务调用registerRecevier(),那么只需将BroadcastReceiver作为Service的内部类,在这种情况下,两个对象都可以访问'服务的数据成员。尽管如此,这并不能消除对持久数据存储的需求,对于那些应该超越服务生命周期的数据,服务不会永远存在。 – CommonsWare

+0

谢谢。这很有价值,但我想保持清洁并有单独的文件(并且了解更多)。我会保持数据的喜好,因为你(而且只是8blaze)说,但我也需要与服务沟通。 – greenoldman

1

我不会用这个服务,SharedPreferences是用于存储一些键/值对数据非常有用。

相关问题