Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/212.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-使用Singletop时在背面导航上重新绘制UI_Android_User Interface - Fatal编程技术网

Android-使用Singletop时在背面导航上重新绘制UI

Android-使用Singletop时在背面导航上重新绘制UI,android,user-interface,Android,User Interface,为了避免在我的主活动和一些子活动之间导航时一直调用OnDestory()和OnCreate(),我在清单中设置了singleTop选项。不幸的是,这导致我的主活动中的UI在从子活动返回时消失。我真的需要手动重新绘制UI吗 我仍然想知道如何处理这些基本的导航功能。在主活动的OnCreate()中执行应用程序初始化任务(例如启动服务)是否不常见?我想你的解释中肯定遗漏了一些东西,因为你提供的基本点不正确。当您从活动中启动另一个(子)活动时,启动活动不会被销毁,但会停止。因此,当您返回时,将调用onS

为了避免在我的主活动和一些子活动之间导航时一直调用OnDestory()和OnCreate(),我在清单中设置了singleTop选项。不幸的是,这导致我的主活动中的UI在从子活动返回时消失。我真的需要手动重新绘制UI吗


我仍然想知道如何处理这些基本的导航功能。在主活动的OnCreate()中执行应用程序初始化任务(例如启动服务)是否不常见?

我想你的解释中肯定遗漏了一些东西,因为你提供的基本点不正确。当您从活动中启动另一个(子)活动时,启动活动不会被销毁,但会停止。因此,当您返回时,将调用onStart。
因此,也许您可以稍微解释一下您的需求背景。

将android:launchMode=“singleTask”用于您的主要活动,这样如果您通过Intent调用,系统将不会重新创建它。您还可以使用清除堆栈并返回到主要活动

Intent intent = new Intent(SubActivity.this, MainActivity.class);
intentHome.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intentHome.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(intentHome);

但是当使用singleTask标志时,我需要手动重新绘制我的应用程序。这是正确的吗?对不起,在这种情况下,singleTaks没有意义。这仅仅意味着不会创建单独的实例,但与添加已启动活动(而不是启动)时的backbackback无关。您指定的那些标志也适用于已启动的活动(子活动),这不是这里的问题。我正在使用清单中的“android:parentActivityName”来激活子活动中的反向导航。不幸的是,这在默认情况下会导致在返回时从头开始重新创建我的主活动(ondestroy+oncreate)。为了防止这种情况,我使用了singleTop属性。但这现在导致我的主要活动在返回时没有重新绘制。因此,我基本上想知道这样一个基本应用程序设计的正确实现是什么样子的:-/让我们验证一些基础知识。如果删除singleTop标志并从主活动中启动活动A,而没有为startActivity标志指定标志,则活动A将添加到Backback中。您的主要活动不会被销毁,但已停止,当您返回(后退按钮或抽屉)时,它将再次启动。如果情况并非如此,则您的系统决定销毁已停止的主活动,这通常仅在系统内存不足或主活动仍消耗过多电源时才会发生。所以,简单地说,你的主要活动有问题。