Android开发之Activity总结(三)

活动的启动模式
Android中Activity的启动模式:
1,standard 是活动默认的启动模式;特点:系统不会在乎这个活动是否已经在返回栈中存在,每次启动这个活动都会创建该活动的一个新的实例。

2,singleTop 在启动活动时如果发现返回栈的栈顶已经是该活动,则认为可以直接使用它,不会再创建新的活动实例。

3,singleTask 每次启动该活动时系统首先会在返回栈中检查是否存在该活动的实例,如果发现已经存在则直接使用该实例,并把这个活动之上的所有活动统统出栈,如果没有发现就会创建一个新的活动实例。

4,singleInstance 会启用一个新的返回栈来管理这个活动。

活动的一些技巧:
1,当你刚进入一家公司,怎么才能知道打开的这个界面是哪个activity呢?我们先来创建一个BaseActivity.java,然后让所有的活动去继承这个类。查看日志就可以知道具体是哪个界面啦。

package com.gyq.activitytest;

import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;

/**
 * ${DESC}
 * author: gyq
 * create at 2016/12/9 14:20
 */
public class BaseActivity extends AppCompatActivity {
    private static final String TAG = "BaseActivity";

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Log.d(TAG, getClass().getSimpleName());

    }

随时随地退出程序;
1,首先创建一个集合类。中定义添加活动,移除活动的方法;然后BaseActivity中调用这两个方法。直接类名.就可以调用啦。

package com.gyq.activitytest;

import android.app.Activity;

import java.util.ArrayList;
import java.util.List;

/**
 * ${DESC}
 * author: 龚友强
 * create at 2016/12/9 14:27
 */
public class ActivityCollector {
    public static List activities = new ArrayList<>();

    public static void addActivity(Activity activity) {
        activities.add(activity);
    }

    public static void removeActivity(Activity activity) {
        activities.remove(activity);
    }

    public static void finishAll() {
        for (Activity activity : activities) {
            if (!activity.isFinishing()) {
                activity.finish();
            }
        }
    }
}

如果你想在某个界面点击按钮就退出程序,则只需在这个按钮的点击事件中调用finishAll()这个方法。

你可能感兴趣的:(Android,基础)