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

Dilemna:防止StackOverflowException或改善用户体验?

  •  1
  • tbruyelle  · 技术社区  · 16 年前

    在我的应用程序中,我有两个列表活动,可以通过单击它们的项目来启动其中一个。

    |--Activity1--|           |--Activity2--|           |--Activity1--|
    |   item11    | ->click-> |   item21    |           |   item21    | ->click-> ...
    |   item12    |           |   item22    | ->click-> |   item12    | 
    |   item13    |           |   item23    |           |   item13    |
    |-------------|           |-------------|           |-------------|
    

    因此,如果用户点击过多,他可以填充所有堆栈,系统将抛出一个错误 StackOverFlowException 不是吗?

    我当时选择的解决方案是用 noHistory="true" ,但现在我很遗憾,用户无法使用“后退”按钮在这两个活动之间导航。

    有人能帮我找到更好的选择吗?

    提前谢谢

    我有一个数据库,其中存储了一个名称列表,该列表链接到一年中的天数列表。一个名称可以链接到多个日期,一天中的同一件事可以链接到多个名称。

    the database schema 
    
    |  names  |---< n, m >---|  days  |
    

    因此,此活动工作流是一种数据库导航器:

    • Activity1 是 NameListActivity ,它显示链接到特定日期的名称列表。
    • Activity2 是 DateListActivity

    当用户单击某个项目时(a) )的 名称列表活动 这个 日期列表活动 从链接到单击名称的天数列表开始。
    同样,当用户单击某个项目时(a 白天 )的 这个 名称列表活动 从链接到单击日期的列表af名称开始。

    7 回复  |  直到 16 年前
        1
  •  6
  •   CommonsWare    16 年前

    因此,如果用户点击过多,他可以 填充所有堆栈,系统将 信息技术

    不,不会的。

        2
  •  1
  •   Jan Aagaard    16 年前

    我需要更多关于菜单内容的细节,以获得另一种设计,但您最好重新考虑菜单系统。

        3
  •  1
  •   Draemon    16 年前

    我想说,最糟糕的情况是你失去了一些旧的历史。

        4
  •  1
  •   James    16 年前

    Commonware是正确的。您不必担心堆栈溢出。:)但是,您可以将应用程序设计为清除堆栈,以避免出现您描述的情况。调查 Clearing the Stack ,特别是 clear top

        5
  •  0
  •   Pete McKinney    16 年前

    您需要做的是将历史存储在某种结构中,而不是依赖堆栈为您维护它。这样,您就可以保持良好的用户体验,而不会破坏系统。

        6
  •  0
  •   Alex Volovoy    16 年前
        7
  •  0
  •   zorglub76    16 年前

    我的申请也有类似的问题。 问题似乎在于每个活动的嵌套视图数量。例如,如果您有:

    tab->
        linear layout->
            text,
            linear layout->
                 text,
                 scroll->
                      text,
                      linear layout->
                           image, 
                           text
    

    而且可能还有更多的嵌套,在从这样的视图多次返回到类似的视图后(根据我的经验),出现堆栈溢出的几率很高。使用hierarchyviewer(android sdk/tools)检查嵌套。同时告诉我你是否解决了这个问题,因为我仍然不知道如何解决它。。。