2011-02-10 23 views
0

我对Android开发有点新,我正在尝试构建一个非常简单的应用程序,它将浏览DLNA服务器的网络并允许我浏览每个DLNA服务器作为目录。想法很简单:一个活动显示网络上的所有DLNA服务器,用户选择一个,然后我们重定向到浏览DLNA媒体服务器目录的另一个活动。我应该使用服务作为访问网络数据的一种方式吗?

我的问题是相当基本的:我如何坚持像'selected server','当前目录'等信息这样的信息?我只需要一种方法让我的应用程序的其余部分知道该怎么做。我应该将这些数据构建到服务中吗?这似乎违反了对于服务应该是什么的共同理解。我该如何/应该坚持应用程序状态?

回答

2

您有几个选项。我认为我最喜欢的一个是,您只需将这些值传递给您从一个活动发送到下一个活动的Intent对象。因此,浏览DLNA媒体服务器目录的活动接收到意图中选定的服务器,并且如果这来自DLNA列表活动,那很好,但意图可能来自任何想要向媒体服务器目录显示媒体服务器目录的活动用户。尽量在活动内部封装功能,以便不需要依赖应用程序的其余部分来获取数据。

当您在应用程序中确实需要数据时,请查看SharedPreferences。这些可以显示给用户,以便他们可以在应用程序的调用中进行选择,并且应用程序中的任何活动都可以轻松读取首选项并保持最新状态。然而,并非所有偏好都需要显示。您始终可以创建首选项编辑器来读取和编写自己的首选项,而无需向用户显示。

还有其他一些选项可以设置保存共享值的单例类,并且每个活动都可以引用或作为最后的手段来扩展Application类,并创建获取器和设置器以使值可用你的申请。我说最后的手段,因为应用程序是Android中的一个重要的类,最好单独留下,所以你现在或将来不会意外地破坏某些东西。

要回答您的其他问题,您不仅应该使用服务来进行网络访问,还需要创建线程。 Android服务默认不包含后台线程,您需要自己做。你不应该从主(另一个用户界面)线程进行网络调用。

+0

优秀的答案:)我想我只是不断传递数据像雪球一样,将所有相关数据都添加到传递的Intent中去? – 2011-02-10 03:43:33

相关问题