Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/197.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 我应该使用服务作为访问网络数据的方式吗?_Android_Theory_Upnp_Dlna - Fatal编程技术网

Android 我应该使用服务作为访问网络数据的方式吗?

Android 我应该使用服务作为访问网络数据的方式吗?,android,theory,upnp,dlna,Android,Theory,Upnp,Dlna,我对Android开发有些陌生,我正在尝试构建一个非常简单的应用程序,它可以在我的网络中浏览DLNA服务器,并允许我将每个DLNA服务器作为目录进行浏览。其思想非常简单:一个活动显示网络上的所有DLNA服务器,用户选择一个,然后我们重定向到另一个活动,浏览DLNA媒体服务器的目录 我的问题很基本:如何持久化诸如“所选服务器”、“当前目录”等信息?我只需要一种方法让我的应用程序的其余部分知道该做什么。我应该将这些数据构建到服务中吗?这似乎违反了关于服务应该是什么的共识。我应该如何保持应用程序状态

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


我的问题很基本:如何持久化诸如“所选服务器”、“当前目录”等信息?我只需要一种方法让我的应用程序的其余部分知道该做什么。我应该将这些数据构建到服务中吗?这似乎违反了关于服务应该是什么的共识。我应该如何保持应用程序状态

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

当应用程序中确实需要数据时,请查看SharedReferences。这些参数可以显示给用户,这样用户就可以在应用程序的调用过程中做出持久的选择,并且应用程序中的任何活动都可以轻松地读取首选项并保持最新状态。然而,并非所有的首选项都需要显示。您始终可以创建一个首选项编辑器来读取和写入您自己的首选项,而无需向用户显示它们

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


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

非常好的回答:)我想我会像滚雪球一样传递数据,在传递的意图中附加所有必要的相关数据?我会同意的。虽然一个活动中的所有内容都需要传递给下一个活动可能不是真的。