【问题标题】:Android - How to limit activity instances to one per list item?Android - 如何将活动实例限制为每个列表项一个?
【发布时间】:2015-08-20 14:27:50
【问题描述】:

我有 FooListActivity(一个实例,显示所有 foo 的列表)和 FooActivity(每个 foo 零个或一个实例)。

FooActivity 可以从 FooListActivity 启动,也可以从无需用户干预的长时间运行的服务启动。

如何确保每个 foo 最多存在一个 FooActivity?

即如果我尝试为已经有 FooActivity 的 foo 启动 FooActivity,它应该将现有的 FooActivity 放在前面,而不是创建一个不需要的实例。

【问题讨论】:

    标签: android listactivity listadapter


    【解决方案1】:

    如果我对您的理解正确,您不只想要一个活动实例(您可以使用android:launchMode="singleInstance" 控制),而是希望每个显示的内容都有一个实例?如果是这样,您将不得不自己跟踪这一点。

    另外,我不确定这是一个好主意。虽然我可以在平板电脑上想象一些使用模式(但随后使用 Fragments,而不是活动),但在手机上用户需要返回列表以查看其他数据(并且 if 将 FooActivity 设置为显示数据很重,那么您也许应该考虑一些缓存?

    【讨论】:

    • 是的,每个 foo 有 0 个或 1 个 FooActivity。
    • 我认为这是个好主意 - 在我的 Android 手机上,我可以多次打开同一个联系人,但使用“返回”时我觉得很烦人。 ContactA --back--> CallActivity --back--> ContactA(再次!) --back--> ListOfContacts
    • 但是您真的需要这个“每个 foo 的实例”还是实际上您只是不想缩短“返回”路径?看起来你想要后者,所以也许只需将 FooActivity 启动模式设置为 singleInstance 就可以了。然后,您将始终只能退到联系人列表,因为无论如何都不会再有旧联系人的详细信息。只是最近的一个
    【解决方案2】:

    请为 FooActivity 设置一个标志:

    android:launchMode="singleInstance"
    

    【讨论】:

    • OP 要求每个 foo 一个 Activity,而不是所有的一个 Activity。
    猜你喜欢
    • 2023-03-05
    • 2013-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-21
    • 1970-01-01
    相关资源
    最近更新 更多