2015-02-09 54 views
2

Im在播放音乐的Xamarin.Android上构建一个应用程序,用于使用简单服务播放音乐im。即使应用程序最小化服务不断播放音乐。对于片段和服务之间的通信,我使用MessageBus,并且我使用Application类来存储从许多片段中需要的所有数据,直到App关闭。在Android上哪种方式是最好的,以便服务与OnResume上的应用程序进行通信

我有一个问题关于哪些是更新的的onResume事件的片段的最佳方式是,当前播放曲目有变化(这是最小化,并暂停后):

即时通讯思想的那些方法之一:

1)应用程序类存储当前的播放列表与轨道名称,渣油等和当前列表位置,所以即时通讯考虑OnResume事件的应用程序类更新值,然后片段OnResume事件从Application类获取值。但问题是,如何确保应用程序OnResume事件将在片段的相同事件之前触发?

2)OnResume事件中的片段向服务发送请求以获取当前数据,然后将它们发送到Application类以便从其他片段使用。

你最喜欢哪种方法?

而且是同一使用的

public int listpos { get; set;} 

代替

private int listpos; 

,并获取或设置与功能的价值?使用public int或其他安全问题的垃圾收集器会出现问题吗?

回答

1

一个好方法是Bind服务和查询它的细节,当他们需要。我不建议在Application类中设置任何临时数据,因为这会迫使您保持同步并可能导致问题。

P.S.整个应用程序没有OnResume

+0

消息总线和绑定服务是不一样的?你建议使用哪种方式存储数据?虽然同步不是问题。 – CDrosos 2015-02-09 08:54:43

+0

'service'是一个Android框架组件,而'MessageBus'是一个Xamarin事件实现,它们没有任何共同之处。我建议在**服务上存储与“服务”**相关的数据,如果您需要它,请使用“共享首选项”或您选择的数据库实现。 – 2015-02-09 09:04:59

+0

对不起,当我说同样的我的意思是,两者都很好。那么许多其他片段需要的数据呢?从sharedpref或数据库提取这些数据不会导致延迟? – CDrosos 2015-02-09 09:13:47