【问题标题】:Issues with Translucent Theme半透明主题的问题
【发布时间】:2025-12-24 17:25:11
【问题描述】:

我有一个有两个活动的应用程序。 第一个显示有一个按钮,可以打开第二个。

这是第一个的 Manifiest 定义:

<activity
    android:name="com.example.buttonexample.MainActivity">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />

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

第二个活动:

<activity
    android:name="com.example.buttonexample.MainActivity2"
    android:label="@string/title_activity_main_activity2" android:theme="@android:style/Theme.Translucent">
</activity>

这是我启动第二个活动的方式(通过 OnClickListener 获取第一个活动上的按钮):

public void startSecondActivityClick(View v) {
   Intent startActivity2 = new Intent(this, MainActivity2.class);
   startActivity(startActivity2);
}

这工作正常,但是当我通过点击主页和前台应用程序来后台应用程序时。我注意到第一个活动是不断地创建/破坏自己。我通过在 onDestory 方法中添加一些代码来增加静态 int 来验证这一点:

private static int count = 0;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    count++;

}

protected void onDestroy() {
    super.onDestroy();
    Log.i("MainActivity", String.format("Destroyed, %d", count));
}

我还注意到删除半透明主题似乎可以解决此问题。我的问题是有没有办法半透明或类似的东西,但也不能重新启动?另外,我很好奇为什么会发生这种情况。我正在 Galaxy SIII 上的 4.0.1 ICS 上对此进行测试。

【问题讨论】:

  • 它不断地创造和毁灭自己是什么意思?当您仅查看第二个活动一次时,您的意思是它正在创建和销毁多次吗?你能给我们举个日志输出的例子吗?
  • 我的意思是 onCreate 和 onDestroy 被快速连续调用。我将添加一些日志输出。
  • 好吧,经过一番挖掘,我能够弄清楚为什么会发生这种情况。有人打开了开发者选项之一,“不保留活动”。关闭此功能后,这种情况就停止了。我怀疑这在生产中不会经常发生,因为大多数人可能没有这种设置。
  • 嗨,出于好奇,我在哪里可以打开此选项以“不保留活动”?
  • @noahd 您可能希望将有关“开发人员选项”的评论移至答案。不是每个人都阅读 cmets,我知道这样的答案我会投赞成票

标签: android android-theme


【解决方案1】:

好的,经过一番挖掘,我能够弄清楚为什么会发生这种情况。有人打开了开发者选项之一,“不保留活动”。关闭此功能后,这种情况就停止了。我怀疑这在生产中不会经常发生,因为大多数人可能没有这种设置。您可以在大多数手机的设置 ->“开发者选项”下找到它。

【讨论】: