设为首页 加入收藏

TOP

Activity的启动模式之Standard
2017-10-13 10:35:41 】 浏览:387
Tags:Activity 启动 模式 Standard

  standard是活动默认的启动模式,在不进行启动模式的设置的情况下,所有活动都会自动使用这种启动模式。在该模式下,每当启动一个Activity就会在返回栈中入栈,将前面启动的Activity压入到栈内,本身处于栈顶的位置。对于使用standard模式的活动,android系统不会在乎这个活动是否已经在返回栈中存在,每次启动都会创建该活动的一个新的实例。

  弄段代码对该模式进行深入的体会,我们在布局中加入一个按钮Button,通过该按钮来启动同一个活动,然后观察进栈退栈的情况。创建一个项目LearnLaunchMode;在activity_main.xml文件中输入如下代码添加一个Button:

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3     xmlns:tools="http://schemas.android.com/tools"
 4     android:layout_width="match_parent"
 5     android:layout_height="match_parent"
 6     tools:context="com.rocking.learnlaunchmode.MainActivity">
 7     <Button
 8         android:id="@+id/launch"
 9         android:layout_width="match_parent"
10         android:layout_height="wrap_content"
11         android:text="再次启动一个MainActivity" />
12 </LinearLayout>

  然后在MainActivity.java文件中执行启动Activity的操作,代码如下:

 1 public class MainActivity extends ActionBarActivity {
 2     private Button launch;  //声明一个Button组件
 3     @Override
 4     protected void onCreate(Bundle savedInstanceState) {
 5         super.onCreate(savedInstanceState);
 6         requestWindowFeature(Window.FEATURE_NO_TITLE);  //隐藏标题栏;必须放在setContent()前面
 7         setContentView(R.layout.activity_main);
 8         Log.i("tag", this + " is launch");
 9         launch = (Button) findViewById(R.id.launch);    //获取布局文件中的Button组件
10         //以匿名类的形式添加Button的事件监听器
11         launch.setOnClickListener(new View.OnClickListener() {
12             @Override
13             public void onClick(View v) {
14                 Intent intent = new Intent();   //创建一个意图
15                 //"显示"意图,第一个参数是一个Context,即当前的Activity,第二个参数是我们要打开的Activity
16                 intent.setClass(MainActivity.this, MainActivity.class);
17                 startActivity(intent);  //启动该意图
18             }
19         });
20 
21     }
22 }

  运行该程序,此时已经有一个MainActivity,然后再点击两次Button,继续创建两个MainActivity的实例,在LogCat中可以看到打印信息如下,也就是说有三个MainActivity进入了返回栈。

  此时如果我们需要退出程序,则需要点击三次back键,将这些活动出栈。因此,可以画出Standard模式的原理示意图如下:

 

  另外需要注意的地方是,如果是想在当前的 Activity_A 启动自身 Activity_A,那么启动模式只能是 Standard 的,设置为接下来要讲到的 SingleTop 和 SingleTask 是跳转不了的,那么又不想在任务栈中堆放这么多的同一个 Activity,那么就在 startActivity(intent) 之后加上一个 finish() 方法来结束自己的生命了。

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇AndroidListview 滑动过程中图片.. 下一篇android实现倒计时

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目