如何从活动堆栈完成/杀死活动(活动是从服务开始的)



我正在为某些营销公司制作应用程序.aim是在某个时候向用户展示其产品(使用会选择一个小时,应用程序将在一个小时后显示公司的最新产品)。

我面临的问题

==>警报管理器在某个随机时间触发服务==>活动表现良好,但在关闭按钮上(我在这里呼叫完成())。活动保留在活动堆栈中(应该删除)

示例

 <service
 android:name=".HelperService"
 android:label="Product Service"
 android:enabled="true">
 </service>
<activity android:label="Product"  android:name=".BDriverActivity">
<intent-filter>
<action android:name="android.intent.action.ACTIVE" />
<category android:name="android.intent.category.DEFAULT" />
 </intent-filter>
</activity>

helperService

 Intent i = new Intent();
                i.putExtra("s", 1);
                i.setClass(this, BDriverActivity.class);
                i.setFlags(DriveFile.MODE_READ_ONLY);
                startActivity(i);
                stopSelf();

bdriveractivity

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
 requestWindowFeature(1);
        getWindow().setFlags(AccessibilityNodeInfoCompat.ACTION_NEXT_HTML_ELEMENT, AccessibilityNodeInfoCompat.ACTION_NEXT_HTML_ELEMENT);
SHOWPRODUCT();
// on click of close call FINISH()
}

Alaram Manager

int mint=Global.mints;
        Calendar cal = Calendar.getInstance();
        cal.add(Calendar.SECOND, 10);
        Intent intent = new Intent(activity, HelperService.class);
        PendingIntent pintent = PendingIntent.getService(activity, 0, intent, 0);
        AlarmManager alarm = (AlarmManager) activity.getSystemService(Context.ALARM_SERVICE);
        int i;      
        i=60*mint;
        alarm.setRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(),
                i* 1000, pintent);
         }

您需要在清单中添加以下代码行

<activity android:label="Product"  android:name=".BDriverActivity" android:noHistory="true">

希望可以帮助您

设置以下清除任务的意图

Intent i = new Intent();
            i.putExtra("s", 1);
            i.setClass(this, BDriverActivity.class);
            i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK)
            i.setFlags(DriveFile.MODE_READ_ONLY);
            startActivity(i);

尝试此希望对您有帮助

  • 使用程序化完成,只需使用此

intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK); 

  • 您可以完成maninfest中的几个更改

<activity android:label="Product"  
android:name=".BDriverActivity"
android:noHistory="true">

乐于帮助您

https://developer.android.com/guide/topics/manifest/Activity-element.html#exclude

使用Dublude_from_rencents flag

开始活动

最新更新