我正在通过服务开始一项活动。 ,
在这种情况下,我设置了两个标志,一个是
Intent.FLAG_ACTIVITY_NEW_TASK
因为我正在通过service.its新的
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>
答案 0 :(得分:0)
尝试使用finishAffinity()
代替finish()
答案 1 :(得分:0)
添加以下标志而不是setflag来打开活动
intent.addFlags(Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
然后在关闭按钮上调用下面的函数
private void endTask() {
if (Build.VERSION.SDK_INT >= 21) {
finishAndRemoveTask();
} else {
finish();
}
}
答案 2 :(得分:0)
您可以通过在AndroidManifest.xml文件的相关条目中将 android:noHistory 属性设置为“ true”来获得此行为。
例如:
<activity
android:name=".YourActivity"
android:noHistory="true" />
答案 3 :(得分:0)
我通过添加标志Intent.FLAG_ACTIVITY_NEW_DOCUMENT
解决了我的问题,该标志用于将文档打开到植根于启动活动的新任务中
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_NEW_DOCUMENT);
清单中我有 noHistory
android:noHistory="true"