0

我对 Android 开发有点陌生,我正在尝试构建一个非常简单的应用程序,它将浏览我的网络以查找 DLNA 服务器,并允许我将每个 DLNA 服务器作为目录浏览。这个想法很简单:一个活动显示网络上的所有 DLNA 服务器,用户选择一个,然后我们重定向到另一个浏览 DLNA 媒体服务器目录的活动。

我的问题很基本:我如何保留“选定服务器”、“当前目录”和其他类似信息之类的信息?我只需要一种方法让我的应用程序的其余部分知道该做什么。我应该将这些数据构建到服务中吗?这似乎违反了对服务应该是什么的普遍理解。我如何/应该保持应用程序状态?

4

1 回答 1

2

你有几个选择。我认为我最喜欢的一个是您只需将这些值传递到您从一个活动发送到下一个活动的 Intent 对象中。因此,浏览 DLNA 媒体服务器目录的活动会在 Intent 中接收所选服务器,如果这来自 DLNA 列表活动,那就太好了,但该意图可能来自任何其他想要将媒体服务器目录显示给用户。努力将功能封装在一个活动中,这样它就不需要依赖应用程序的其余部分来获取数据。

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

其他几个选项是设置保存共享值的单例类,并且每个活动都可以引用,或者作为最后的手段,您可以扩展 Application 类,并创建 getter 和 setter 以使值在您的应用程序中可用。我说最后的手段是因为 Application 是 Android 中的一个重要类,最好不要管它,这样你就不会在现在或将来意外破坏某些东西。

要回答您的另一个问题,您不仅应该使用服务来进行网络访问,而且还需要创建线程。默认情况下,Android 服务不包含后台线程,您需要自己做。您永远不应该从主(又名 UI)线程进行网络调用。

于 2011-02-10T03:19:45.110 回答