活动的启动模式

启动模式一共有四种,分别是 standard、singleTop、singleTask和singlestance
可以再AndroidManifest.xml中通过给<activity>标签制定android:launchMode属性来选择启动模式。
1. standard
    是活动默认的启动模式,在不进行显示指定的情况下,所有活动都会自动使用这种启动模式。在standard模式下,每当启动一个新的活动,它就会在返回栈中入栈,并处于栈顶的位置。对于使用standard模式的活动,系统不会在乎这个活动是否已经在返回栈中存在,每次启动都会创建该活动的一个新的实例。
2. singleTop
    当 活动的启动模式指定为singleTop,在启动活动时如果发现返回栈的栈顶已经是该活动,则可以直接使用它,不会再创建新的活动实例。
3. singleTask
    当活动模式指定为singleTask,每次启动该活动时系统首先会在返回栈中检查是否存在该活动的实例,如果发现已经存在则直接使用该实例,并把这个活动之上的所有活动都统统出栈,如果没有发现就会创建一个新的活动实例。
4. singleInstance
    指定为singleInstance模式的活动会启用一个新的栈来管理这个活动。
活动的最佳实践
    知晓当前是哪一个活动:首先新建一个BaseActivity继承自Activity,然后在BaseActivity中重写onCreate()方法,如下所示:

public class BaseActivity extends Activity {    

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        Log.d("BaseActivity", getClass().getSimpleName());

    }

}

我们在onCreate()方法中获取了当前实例的类名,并通过Log打印出来。

让其他Activity类继承BaseActivity即可;

随时随地退出程序:

用一个专门的集合类对所有的活动进行管理就可以了,新建一个ActivityCollector类作为活动管理器

public class ActivityCollector {

   

    public static List<Activity> activities = new ArrayList<Activity>();

 

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

            }

        }

    }

 

}

启动活动的最佳实践

标准方式:

Intent intent = new Intent(FirstActivity.this, SecondActivity.class);

intent.putExtra("param1", "data1");

intent.putExtra("param2", "data2");

startActivity(intent);

最佳实践:

public class SecondActivity extends BaseActivity {

   

    public static void actionStart(Context context, String data1, String data2) {

        Intent intent = new Intent(context, SecondActivity.class);

        intent.putExtra("param1", data1);

        intent.putExtra("param2", data2);

        context.startActivity(intent);

    }

    ……

}

调用启动SecondActivity 

button1.setOnClickListener(new OnClickListener() {

    @Override

    public void onClick(View v) {

        SecondActivity.actionStart(FirstActivity.this, "data1", "data2");

    }

});

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值