代码之家  ›  专栏  ›  技术社区  ›  jul

我应该使用多少活动?[关闭]

  •  22
  • jul  · 技术社区  · 16 年前

    我正在启动android做一个搜索餐馆的应用程序,欢迎你给我一些指导! 在第一个屏幕上,我希望有一个带有submit按钮的搜索字段(我从web服务获取数据),在一个包含搜索结果的列表下面。当点击列表中的某一项时,它将显示一个屏幕,其中包含餐厅的详细信息以及显示其位置的地图。我的问题是:

    • 我可以在一个单独的活动中做所有事情吗?还是应该为搜索、结果列表、餐厅描述和地图做一个活动?
    • 做一个单一的活动会使应用程序更具响应性吗?
    • 如何在正常活动(没有list activity和mapactivity)中使用列表和映射?
    4 回复  |  直到 12 年前
        1
  •  25
  •   Dan Lew    16 年前

    我可以在一个单独的活动中做所有事情吗?还是应该为搜索、结果列表、餐厅描述和地图做一个活动?

    这个问题的答案实际上取决于应用程序的流程。我认为最重要的是要记住用户将如何控制你的应用程序与“后退”按钮。当您创建一个新的活动时,它会将它放在堆栈上,并且用户始终可以按“上一步”将其从堆栈中弹出。

    一个极端是把所有这些步骤放在不同的活动中。然后,用户可以使用“后退”按钮进行最终控制,但他们可能会对跳过活动感到恼火。将所有内容放在一个活动中是另一个极端,我强烈建议不要这样做;用户希望新屏幕是一个不同的活动,一个他们可以“退出”的活动,因此,如果你把所有的鸡蛋放在一个活动中,你就必须开始处理自己的“退出”。

    我认为你的应用程序可以采取一个很好的中间立场,尽管你的用户界面设计当然可能不同于我的建议。我想说,您可以在两个活动中执行此操作:第一个活动中,您在顶部有一个搜索字段(旁边有一个submit按钮),在该搜索字段的下方是一个填充有结果的listview。在第二种情况下,使用tabactivity,其中一个选项卡用于描述,另一个用于映射。我认为这有两个好处:在第一个活动中,用户可以在与搜索相同的页面上看到他们的搜索结果,并且可以在必要时快速更改搜索参数。在第二个活动中,back键封装了一个餐厅的back。

    做一个单一的活动会使应用程序更具响应性吗?

    不是真的。创建/删除活动需要时间,但不是 那个 很多时间。最好以逻辑的方式对应用程序进行分段(以获得用户体验)。

    如何在正常活动(没有list activity和mapactivity)中使用列表和映射?

    您可以在没有listactivity的正常活动中使用listview;只需在活动的内容中包含listview,然后在代码中获取listview并手动设置其适配器。listactivity所做的只是为一个主listview添加一些方便的包装函数,但这根本不是必需的。

    地图是另一回事。您将需要使用MapActivity来显示地图,因为MapActivity有需要运行的特殊设置和拆卸代码。对不起的。

        2
  •  1
  •   cjk    16 年前

    我会有一个搜索和列表的活动,然后是另一个显示休息区细节的活动。

    我不认为只有一个活动就行。

    活动可以包含多个视图-如果需要,单个活动可以包含映射和列表。

        3
  •  1
  •   Phil Haigh    14 年前

    我想为丹尼尔的出色回答提供一些指导。

    用户在按下后退按钮之前,无法区分一个视图发生变化的活动和多个视图各自不同的活动。因此,实际上非常重要的一点是,当按下后退按钮时,它应该有一个与屏幕上的内容相关的自然和逻辑的目的。当用户使用它时,绝不应该对发生的事情感到惊讶。

    因此,对于您拥有的每一项活动,请扪心自问,back按钮的行为是否始终符合最终用户的逻辑。如果你发现一个不存在的场景,那么你应该考虑重构你的活动——这可能涉及到将两个或多个活动组合成一个,将一些职责从一个活动转移到另一个活动(但同时保留它们),甚至将一个活动分成两个。

    创建一个用户界面,当用户在其周围导航时,该界面的行为符合逻辑,这一点很重要,应用程序做得越多(导航也越多),它就越重要。不可预知的导航行为阻止人们在最有可能卸载应用程序的时候学习如何从应用程序中获得最佳效果—在下载应用程序后的最初几个小时内。

        4
  •  0
  •   Dimitri Lozovoy    13 年前

    如果您希望编写模块化、可重用和可移植的代码,一个活动就是方法。活动是android独有的概念。任何精心设计的应用程序的主流程和业务逻辑都应该独立于平台。在高级代码中涉及活动将项目绑定到Android,这违背了平台无关性,这是Java和质量编程的核心原则。