Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Activity啟動清空原任務棧

Activity啟動清空原任務棧

編輯:關於Android編程

若有這樣的需求或場景,要求每次啟動Activity時都清空原有的任務棧,也就是finish掉原任務棧中的所有Activity,有沒有一種鸠占鵲巢的趕腳?

下面介紹的這個方法,就可以很方便的實現這個需求,只需要在啟動Activity的時候添加兩個Flag即可,下面通過實例來真切感受一下。

activity_main.xml:


  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:orientation="vertical">
      android:id="@+id/btn1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:clickable="false"
    android:text="啟動Activity2" />

MainActivity.java:

package com.example.administrator.myapplication;

import android.app.Activity;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutCompat;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.Toast;

public class MainActivity extends Activity {
  private static final String TAG = "YAYUN";
  private Button mButton1;
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Log.d(TAG, "mainActivity: taskId" + getTaskId());
    mButton1 = (Button) findViewById(R.id.btn1);
    mButton1.setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View v) {
        Intent intent = new Intent();
        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | 
              Intent.FLAG_ACTIVITY_CLEAR_TASK);
        intent.setClass(MainActivity.this, Activity2.class);
        startActivity(intent);
      }
    });
  }
  @Override
  protected void onDestroy() {
    super.onDestroy();
    Log.d(TAG, "MainActivity-nDestroy: ");
  }
}

通過代碼可以看出,添加的兩個Flag是:

FLAG_ACTIVITY_NEW_TASK 和 FLAG_ACTIVITY_CLEAR_TASK ,這兩個Flag結合才能實現哦。

Activity2.java:

package com.example.administrator.myapplication;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
/**
 * Created by Administrator on 2016/8/4.
 */
public class Activity2 extends Activity {
  private static final String TAG = "YAYUN";
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity2);
    Log.d(TAG, "activity2: taskId:" + getTaskId());
  }
}

運行項目實例:

\

運行實例可以看出,在MainActivity中啟動Activity2,再點擊返回就回到了桌面,也就是MainActivity已經被踢出任務棧了,看一下Log是不是如此:

\

可以看到,在啟動Activity2的同時,MainActivity也就被finish了,而且可以看到兩個Activity的任務棧是同一個。

為了不耽誤大嬸們太多的時間,就介紹到這兒了。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved