首页 > 解决方案 > 无法从堆栈中删除活动,

问题描述

我正在从服务开始一项活动。,

在这我设置了两个标志一个是

Intent.FLAG_ACTIVITY_NEW_TASK 因为我正在从 service.its new 运行活动

Intent.FLAG_ACTIVITY_NO_HISTORY设置为新活动不会保存在历史堆栈中。一旦用户离开它,活动就完成了。

这是我从服务调用到打开活动的代码

 public static void open(Context context){

        Intent intent=new Intent(context,PopupActivity.class);
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_NO_HISTORY);
        context.startActivity(intent);    
    }

我的活动中有十字按钮来销毁活动,当我按下十字按钮时,活动应该从堆栈中删除,但它仍保留在堆栈中,当按主页按钮查看它时,在堆栈中重新创建活动。例如再次调用“oncreate”

这是我的代码。

 @OnClick(R.id.flClose) void closeWindow(){

       finish();
    }

这是我的清单活动代码。

    <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.mypackagename">


    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.READ_CONTACTS" />
    <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />

    <application
        android:name=".app.MyApplication"
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme.NoActionBar">
        <activity android:name=".SplashActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

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

        <activity
            android:name=".DashboardActivity"
            android:screenOrientation="portrait" />
        <activity
            android:name=".SearchUserActivity"
            android:screenOrientation="portrait" />
        <activity
            android:name=".TermsPolicyActivity"
            android:screenOrientation="portrait" />
        <activity
            android:name=".UserDetailActivity"
            android:screenOrientation="portrait" />
        <activity
            android:name=".DocumentViewerActivity"
            android:screenOrientation="portrait" />



        <activity
            android:noHistory="true"
            android:name=".PopupEndActivity"
            android:configChanges="orientation|keyboardHidden"
            android:theme="@style/Theme.AppCompat.Transparent.NoActionBar" />


        <activity
            android:name=".BlockActivity"
            android:theme="@style/Theme.AppCompat.Transparent.NoActionBar" />


        <activity
            android:name=".BlockSettingsActivity"
            android:theme="@style/AppTheme.NoActionBar"
            android:configChanges="orientation|keyboardHidden"
            />


        <service
            android:name=".service.SyncDataService"
            android:enabled="true"
            android:exported="false" />


    </application>

</manifest>

标签: javaandroidandroid-intentandroid-activityservice

解决方案


我通过添加标志解决了我的问题Intent.FLAG_ACTIVITY_NEW_DOCUMENT此标志用于将文档打开到根植于启动的活动的新任务中

intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_NEW_DOCUMENT);

在清单中我没有历史

android:noHistory="true"

推荐阅读