java - 无法从堆栈中删除活动,
问题描述
我正在从服务开始一项活动。,
在这我设置了两个标志一个是
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>
解决方案
我通过添加标志解决了我的问题Intent.FLAG_ACTIVITY_NEW_DOCUMENT
此标志用于将文档打开到根植于启动的活动的新任务中
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_NEW_DOCUMENT);
在清单中我没有历史
android:noHistory="true"
推荐阅读
- c++ - 在 CPP 中为变量动态分配数据类型
- python - 如何使用 dateutil.tz.tz.tzoffset 本地化使用 strptime 创建的时区幼稚日期时间?
- sql - when/case 语句的问题
- ruby-on-rails - find_each 如何在循环时处理数据库更新
- javascript - 如何获取图像推送的文本宽度?
- php - 如何在 WooCommerce 我的帐户菜单中将链接项目添加到另一个页面
- reactjs - 省略类型的部分以将该类型分成两部分
- azure-active-directory - 以访客身份登录外部租户 (B2B) 时的图形 API 访问
- php - 在 PHP 中登录后继续 SESSION
- python - 踢所有命令