即使在操作系统杀死应用程序后,Android活动仍保留在堆栈上

即使在操作系统杀死应用程序后,Android活动仍保留在堆栈上,android,android-intent,android-activity,android-manifest,android-task,Android,Android Intent,Android Activity,Android Manifest,Android Task,问题是:应用程序允许您打开大量活动。正常启动应用程序,打开多个活动,然后关闭应用程序主页按钮。使用手机,打开其他应用程序。在某些时刻,Android操作系统会终止应用程序进程,您可以再次启动应用程序。开始正确使用它,打开几个活动,然后返回、返回、返回以关闭活动。关闭最后一个活动时,可以看到以前使用的活动 第一个问题:为什么我的活动在OS kill应用程序后仍停留在后台 第二个问题:如何解决此问题?按下“主页”按钮不会关闭应用程序。活动仍保留在堆栈上 可以使用启动模式修改此行为 阅读更多关于和 为

问题是:应用程序允许您打开大量活动。正常启动应用程序,打开多个活动,然后关闭应用程序主页按钮。使用手机,打开其他应用程序。在某些时刻,Android操作系统会终止应用程序进程,您可以再次启动应用程序。开始正确使用它,打开几个活动,然后返回、返回、返回以关闭活动。关闭最后一个活动时,可以看到以前使用的活动

第一个问题:为什么我的活动在OS kill应用程序后仍停留在后台


第二个问题:如何解决此问题?

按下“主页”按钮不会关闭应用程序。活动仍保留在堆栈上

可以使用启动模式修改此行为

阅读更多关于和

为什么我的活动在OS kill应用程序后仍保留在后台

这是故意的。在Android中,应用程序永远不会真正消亡,即使包含进程被终止。默认情况下会保存应用程序的最后一个已知状态,这样当用户返回到应用程序时,他可以从先前停止的位置继续

如何解决这个问题

首先,你需要考虑这是否真的是一个问题。因为它是默认行为,所以你必须考虑框架设计者在编程这个行为时所考虑的内容,以及你想要的东西是否真正适合Android应用程序。 如果您认为这是应用程序的适当要求,则可以执行以下两项操作之一:

1.添加

android:clearTaskOnLaunch = true
android:excludeFromRecents = true
android:finishOnTaskLaunch = true
android:noHistory = true
到应用程序清单中的根
活动
标记,并将
android:noHistory=true
添加到ALL您的
活动
标记

2.像这样开始所有的
活动
s:

Intent i = new Intent(this, NextActivity.class);
i.setFlags(FLAG_ACTIVITY_NEW_TASK | FLAG_ACTIVITY_CLEAR_TASK | FLAG_ACTIVITY_CLEAR_TOP);
startActivity(i);
finish();

这将基本上确保应用程序的任何
活动都没有历史记录。

您可以使用
startActivityForResult
而不是
startActivity
这不会在最近的应用程序中创建活动实例。

尝试以下方法:

1.为主发射器制作徽标活动。创建徽标活动后,将目标活动的意图:

public class LogoActivity extends Activity
{

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);

        Context context = this;

        Intent intent = new Intent(context, MainActivity.class);
        context.startActivity(intent);
        finish();

    }
}
  • 编辑清单,为徽标活动添加android:launchMode=“singleTask”。 例如:
  • 
    

    但这种方法有一个缺陷:当应用程序从操作系统桌面启动时(没有被操作系统杀死),它总是重新打开主活动

    我的水晶球告诉我,除非你提出一个问题并提出一些有效的观点,否则你将被严重否决,你的“问题”可能会在几分钟内结束:)为什么结束这个问题?因为在你的谩骂中没有任何问题。顺便说一句,我没有否决你:)现在好些了吗?你对我的一些问题有答案吗?谢谢你的回答。:)谢谢你的回答。但这并没有解决我的问题。第一:清单中的noHistory对我来说是个坏选项,因为我不会每次都关闭活动。第二:标记活动清除任务是API>11,我的应用程序支持API 9>…1项-这是我需要的!!谢谢不要浪费时间回答这些老问题。
    <activity android:name=".LogoActivity"
              android:launchMode="singleTask">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>