Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.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_Android Fragments - Fatal编程技术网

Android 将处理程序线程类放在片段或活动类中是最佳实践吗?

Android 将处理程序线程类放在片段或活动类中是最佳实践吗?,android,android-fragments,Android,Android Fragments,我目前正在尝试将我现有的Android应用程序转换为使用片段。我的活动所做的主要工作有时需要一段时间,因此我实现了一些线程来充当回调处理程序——我被引导相信这是使用这些线程和进度对话框的最佳实践 希望这是有道理的 我的问题是:我应该将这些内部类移动到片段类中,还是将它们保留在活动类中?没有硬性规定,但我喜欢将它们保留在最适合它们的范围内。如果长时间运行的任务的结果只在启动它的片段中有用,那么它就存在于片段中。如果任务可能会影响多个片段,那么它可能会存在于活动中。实际上,软件的最佳实践通常有点不同

我目前正在尝试将我现有的Android应用程序转换为使用片段。我的活动所做的主要工作有时需要一段时间,因此我实现了一些线程来充当回调处理程序——我被引导相信这是使用这些线程和进度对话框的最佳实践

希望这是有道理的


我的问题是:我应该将这些内部类移动到片段类中,还是将它们保留在活动类中?

没有硬性规定,但我喜欢将它们保留在最适合它们的范围内。如果长时间运行的任务的结果只在启动它的片段中有用,那么它就存在于片段中。如果任务可能会影响多个片段,那么它可能会存在于活动中。

实际上,软件的最佳实践通常有点不同,首先你需要知道,软件中的任何东西都没有“硬规则”,关键字是“全靠(摘自《实用思考与学习》一书),因此,这完全取决于你想要什么和你需要什么,你应该把事情放在一个平衡点上,以知道哪里更适合你,但是回到一般的最佳实践,对于这些情况,最好是让业务模型类与片段/活动或任何其他安卓组件完全解耦,实际上,您应该有一个模型类和一个控制器类,它们都应该操作/填充这些元素中的数据和视图

希望这有帮助


问候

这取决于你有多少片段,以及你试图用这些线程做什么。虽然没有一般的规则,但在做出决定时,有两件事需要考虑。p> (1) 如果您正在下载将在多个片段中使用的信息(例如在
ViewPager
Tab
设置中)在
FragmentActivity
中进行回调可能是有意义的,这样您就可以轻松地将该信息分发到将处理UI的
Fragment
。我想到的另一个例子是获取位置数据。如果位置数据将在整个应用程序中使用,并且您的
FragmentActivity
承载多个片段,那么在一个位置获取信息并单独更新片段就更有意义了

(2) 如果您正在使用类似于
AsyncTask
的东西来一次性下载、发布或特定片段特有的其他内容,那么将其本地化到该片段并没有什么错。事实上,在这种情况下,将任务卸载到您的
FragmentActivity
比在本地完成任务效率更低

真的没有“正确”的答案。只是一个关于你的应用程序是如何构造的以及你想要完成什么的问题