android中launhmode四种启动方法详解android中launchmode四种启动方法详解.docVIP

  • 6
  • 0
  • 约5.96千字
  • 约 12页
  • 2017-03-18 发布于贵州
  • 举报

android中launhmode四种启动方法详解android中launchmode四种启动方法详解.doc

android中launhmode四种启动方法详解android中launchmode四种启动方法详解

Android中launchMode四种启动方法详解 在多Activity开发中,有可能是自己应用之间的Activity跳转,或者夹带其他应用的可复用Activity。可能会希望跳转到原来某个Activity实例,而不是产生大量重复的Activity。这需要为Activity配置特定的加载模式,而不是使用默认的加载模式。 加载模式分类及在哪里配置 Activity有四种加载模式: standard singleTop singleTask singleInstance 设置的位置在AndroidManifest.xml文件中activity元素的android:launchMode属性: activity android:name=ActB android:launchMode=singleTask/activity 也可以在Eclipse ADT中图形界面中编辑: ? 区分Activity的加载模式,通过示例一目了然。这里编写了一个Activity A(ActA)和Activity B(ActB)循环跳转的例子。对加载模式修改和代码做稍微改动,就可以说明四种模式的区别。 standard 首先说standard模式,也就是默认模式,不需要配置launchMode。先只写一个名为ActA的Activity: package com..activities; import android.app.Activity;? import android.content.Intent;? import android.os.Bundle;? import android.view.View;? import android.view.View.OnClickListener;? import android.widget.Button;? import android.widget.LinearLayout;? import android.widget.TextView; public class ActA extends Activity {? /** Called when the activity is first created. */? @Override? public void onCreate(Bundle savedInstanceState) {? super.onCreate(savedInstanceState);? TextView textView = new TextView(this);? textView.setText(this + );? Button button = new Button(this);? button.setText(go actA);? button.setOnClickListener(new OnClickListener() {? @Override? public void onClick(View v) {? Intent intent = new Intent();? intent.setClass(ActA.this, ActA.class);? startActivity(intent);? }? });? LinearLayout layout = new LinearLayout(this);? layout.setOrientation(LinearLayout.VERTICAL);? layout.addView(textView);? layout.addView(button);? this.setContentView(layout);? }? } 例子中都没有用layout,免得看着罗嗦。可见是ActA – ActA的例子。在界面中打印出对象的toString值可以根据hash code识别是否创建新ActA实例。 第一个界面: 点击按钮后: 可以多点几次。发现每次都创建了该Activity的新实例。standard的加载模式就是这样的,intent将发送给新的实例。 现在点Android设备的回退键,可以看到是按照刚才创建Activity实例的倒序依次出现,类似退栈的操作,而刚才操作跳转按钮的过程是压栈的操作。如下图: ? singleTop singleTop和standard模式,都会将intent发送新的实例(后两种模式不发送到新的实例,如果已经有了的话)。不过,singleTop要求如果创建intent的时候栈顶已经有要创建的Activity的实例,则将intent发送给该实例,而不发送给新的实例。 还是用刚才的示例,只需将launchMode改为singleTop,就能看到区别。 运行的时候会发现,按多少

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档