透明活动在恢复时不显示Android

5
我有三个活动: 主页(Base activity), 带有

 <activity
        android:launchMode="singleTop"
        android:name="com.Home"
        android:label="@string/app_name"

        android:screenOrientation="portrait" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

还有两个活动:Activity1和Activity2

主题为android:theme="@android:style/Theme.Translucent"的活动可以相互调用或从主屏幕调用。

它们总是在按下返回键时返回到主屏幕,这是被重载的。

intent.setClass(this, Home.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);

当从Activity2调用Activity1时

intent.setClass(this, ACtivity2.class);
intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
startActivity(intent);

它的 onResume 方法被调用但是看不到吗?有解决方案吗?

我只想要堆栈中的单个 Activity 实例。

要求:Activity1 和 Activity2 只要创建了就应该永远不会被销毁(它们应该一直从历史记录中调用),直到 Home 被调用。

请帮我解决这个问题。 提前感谢您的帮助。

也访问过这个链接


1
Android存在一个长期存在的bug,涉及FLAG_ACTIVITY_REORDER_TO_FRONT和半透明主题的组合。它不能像应该的那样工作。请参见https://dev59.com/GWox5IYBdhLWcg3wSCZW。 - David Wasser
2个回答

2

我猜测问题出在您在Home Activity中使用了FLAG_ACTIVITY_CLEAR_TOP。

因为它执行以下操作:

如果调用的活动类型的实例已经存在于堆栈中,则将该实例带到前台,而不是创建新的实例。此外,堆栈中所有位于该实例上方的活动都会被清除。例如,假设当前的活动堆栈是ABCDE,启动类型为C的活动将从任务中清除活动D和E,并导致堆栈ABC。

所以当您调用Home Activity时,您的Activity 1和Activity 2会被清除。

解决方法:

使用FLAG_ACTIVITY_RESET_TASK_IF_NEEDED或FLAG_ACTIVITY_REORDER_TO_FRONT调用Home Activity。

因为它执行以下操作:

除非意图创建一个新任务或将现有任务带到前台,否则此标志无效。在这种情况下,任务将被重置,这意味着任务亲和力将应用(导致活动从此任务移动或移动到此任务),并且鉴于还设置了FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET,任务将根据该标志的规定进行清除。


我希望HOME始终作为基础活动,而不是将其置于前面,因为只有通过HOME才能退出应用程序。 - Hanry
在主页活动中,编写onBackPressed事件,并调用手机的主屏幕。@hanry http://stackoverflow.com/questions/8515990/call-the-default-home-screen-from-application - MKJParekh
如果安装了自定义启动器(GoLauncher),则每次按下返回键时都会要求选择主屏幕,除非选择了默认的启动器。 - Hanry
尝试使用exit(0)而不是调用主屏幕意图,我还没有检查过..所以如果对你的问题有效,请测试一下@hanry - MKJParekh
你可以使用这段代码直接跳转到默认的启动器屏幕:http://pastebin.com/Fz6rLkwy @hanry - MKJParekh

0
在您的清单中添加


android:launchMode="singleinstance";

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接