【Android】退出多个Activity方法(三)

来源:互联网 发布:淘宝信用查询网站 编辑:程序博客网 时间:2024/06/11 18:58

    之前介绍了两个退出多个Activity的方法了。链接在下面:
    方法一:setFlags()方法
    方法二:setResult()方法
    接下来介绍第三种方法——自定义的一个类去管理打开的Activity。废话不多说直接上代码,如下:

public class MyApplication extends Application {    private static Context myApplication;    public static ArrayList<Activity> activities;    @Override    public void onCreate() {        super.onCreate();        myApplication = getApplicationContext();    }    /**     * 添加Activity     */    public static void addActivity(Activity activity) {        if (activities == null) {            activities = new ArrayList<Activity>();        }        activities.add(activity);    }    /**     * 删除集合中指定的Activity     */    public static void removeActivity(Activity activity) {        activities.remove(activity);    }    /**     * 关闭所有的Activity,并清空集合     */    public static void finishAllActivity() {        for (Activity activity : activities) {            if (!activity.isFinishing()) {                activity.finish();            }        }        activities.clear();    }    public static Context getContext() {        return myApplication;    }}

    自定义一个MyApplication类,其中实现的方法是:addActivity、removeActivity和finishAllActivity。


    还是和之前一样有五个Activity,分别是BaseActivity、A、B、C和D,其中BaseActivity作为基类Activity,让其余四个Activity继承于它。BaseActivity和其余四个Activity代码如下:

/** *BaseActivity实现代码 */public class BaseActivity extends AppCompatActivity {    private static final String TAG = "BaseActivity";    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        Log.d(TAG, getClass().getSimpleName());//打印出相应的Activity名称        MyApplication.addActivity(this);//将Activity添加到集合中    }}/** *A实现代码,其余类似 */ public class A extends BaseActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.a_layout);        Button btnA = (Button) findViewById(R.id.btn_a);        btnA.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                startActivity(new Intent(A.this, B.class));            }        });    }}

    最后,在想要完全退出的地方,使用如下代码:

MyApplication.finishAllActivity();

方法步骤总结:

  1. 自定义一个类,用于管理打开的Activity,在类中定义一个集合用于存储打开的Activity,接下来实现添加Activity(list.add(Activity activity))、删除集合中指定的Activity(list.remove(Activity activity))和关闭所有Activity并清空集合(遍历整个集合,使用finish()关闭Activity,list.clear()清空集合)。
  2. 定义一个基类Activity,其他Activity继承于它。基类Activity中使用
    自定义类名.addActivity(this);实现添加Activity到集合中。
  3. 退出时使用:自定义类名.finishAllActivity();实现退出多个Activity。
0 0
原创粉丝点击