如何从活动堆栈中完成/终止活动(活动从服务开始)

时间:2017-10-03 10:02:57

标签: android android-service android-sdk-tools

我正在为一些营销公司制作应用程序.Aim是在一段时间后向用户展示他们的产品(使用将选择一小时的时间,应用程序将在一小时后显示公司的最新产品)。我提供服务和时间表使用报警管理器和来自报警管理器的被调用活动。活动将有产品信息和关闭按钮

我面临的问题

==>警报管理器在某个随机时间触发服务 ==>活动显示很好,但关闭按钮(我在这里调用完成())。活动仍在活动堆栈中(应删除)

Manifist

 <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);
         }

5 个答案:

答案 0 :(得分:0)

您需要在清单

中添加以下代码行
<activity android:label="Product"  android:name=".BDriverActivity" android:noHistory="true">

希望能帮到你

答案 1 :(得分:0)

尝试按照FLAG_ACTIVITY_CLEAR_TOP的文档中所述添加FLAG_ACTIVITY_NEW_TASK:

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

答案 2 :(得分:0)

设置清除任务的意图标志,如下所示

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);

答案 3 :(得分:0)

试试这个希望它对你有帮助

  • 完成程序化,只需使用此
  • 即可
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK); 
  • 或者您可以在maninfest
  • 中进行一些更改
<activity android:label="Product"  
android:name=".BDriverActivity"
android:noHistory="true">

乐意帮助您

答案 4 :(得分:0)