activity启动模式之singleTask

一、简介

如果另外一个应用调用了C2,C2在栈底,如果这个程序里面再嗲用C1,C3,C2,那么这个C2就是调用onNewIntant的,C1和C3都被销毁了;

另一个程序>c2>c1>c3>c2,实际只剩:另一个程序>c2。

二、代码实例

效果图:

上面就是调用了onNewIntent方法的情况

代码:

activity.C1

 package activity;

 import com.example.activityLaunchSingleTask.R;

 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; public class C1 extends Activity implements OnClickListener{
private Button btn_c1;//创建一个button对象
private Button btn_c2;//创建一个button对象
private Button btn_c3;//创建一个button对象
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);//父类操作
setContentView(R.layout.activity_main);//引入名为activity_main的界面
setTitle("我是C1");
btn_c1=(Button) findViewById(R.id.btn_c1);//找id为btn_openActivity的button
btn_c2=(Button) findViewById(R.id.btn_c2);//找id为btn_openActivity的button
btn_c3=(Button) findViewById(R.id.btn_c3);//找id为btn_openActivity的button
btn_c1.setOnClickListener(this);
btn_c2.setOnClickListener(this);
btn_c3.setOnClickListener(this);
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch (v.getId()) {
case R.id.btn_c1:
Intent intent=new Intent();
intent.setClass(C1.this, C1.class);
startActivity(intent);
break;
case R.id.btn_c2:
Intent intent2=new Intent();
intent2.setClass(C1.this, C2.class);
startActivity(intent2);
break;
case R.id.btn_c3:
Intent intent3=new Intent();
intent3.setClass(C1.this, C3.class);
startActivity(intent3);
break;
default:
break;
}
}
}

activity.C2

 package activity;

 import com.example.activityLaunchSingleTask.R;

 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.Toast; public class C2 extends Activity implements OnClickListener{
private Button btn_c1;//创建一个button对象
private Button btn_c2;//创建一个button对象
private Button btn_c3;//创建一个button对象
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);//父类操作
setContentView(R.layout.activity_main);//引入名为activity_main的界面
setTitle("我是C2");
btn_c1=(Button) findViewById(R.id.btn_c1);//找id为btn_openActivity的button
btn_c2=(Button) findViewById(R.id.btn_c2);//找id为btn_openActivity的button
btn_c3=(Button) findViewById(R.id.btn_c3);//找id为btn_openActivity的button
btn_c1.setOnClickListener(this);
btn_c2.setOnClickListener(this);
btn_c3.setOnClickListener(this);
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch (v.getId()) {
case R.id.btn_c1:
Intent intent=new Intent();
intent.setClass(C2.this, C1.class);
startActivity(intent);
break;
case R.id.btn_c2:
Intent intent2=new Intent();
intent2.setClass(C2.this, C2.class);
startActivity(intent2);
break;
case R.id.btn_c3:
Intent intent3=new Intent();
intent3.setClass(C2.this, C3.class);
startActivity(intent3);
break;
default:
break;
}
} @Override
58 protected void onNewIntent(Intent intent) {
59 // TODO Auto-generated method stub
60 super.onNewIntent(intent);
61 Toast.makeText(this, "onNewIntent", Toast.LENGTH_SHORT).show();
62 }
}

activity.C3

 package activity;

 import com.example.activityLaunchSingleTask.R;

 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; public class C3 extends Activity implements OnClickListener{
private Button btn_c1;//创建一个button对象
private Button btn_c2;//创建一个button对象
private Button btn_c3;//创建一个button对象
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);//父类操作
setContentView(R.layout.activity_main);//引入名为activity_main的界面
setTitle("我是C3");
btn_c1=(Button) findViewById(R.id.btn_c1);//找id为btn_openActivity的button
btn_c2=(Button) findViewById(R.id.btn_c2);//找id为btn_openActivity的button
btn_c3=(Button) findViewById(R.id.btn_c3);//找id为btn_openActivity的button
btn_c1.setOnClickListener(this);
btn_c2.setOnClickListener(this);
btn_c3.setOnClickListener(this);
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch (v.getId()) {
case R.id.btn_c1:
Intent intent=new Intent();
intent.setClass(C3.this, C1.class);
startActivity(intent);
break;
case R.id.btn_c2:
Intent intent2=new Intent();
intent2.setClass(C3.this, C2.class);
startActivity(intent2);
break;
case R.id.btn_c3:
Intent intent3=new Intent();
intent3.setClass(C3.this, C3.class);
startActivity(intent3);
break;
default:
break;
}
}
}

/activityLaunchSingleTask/AndroidManifest.xml

 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.activityLaunchSingleTask"
android:versionCode="1"
android:versionName="1.0" > <uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="19" /> <application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="activity.C1"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
24 <activity android:name="activity.C2" android:launchMode="singleTask">
25 <intent-filter>
26 <action android:name="com.example.activityLaunchSingleTask" />
27 <category android:name="android.intent.category.DEFAULT" />
28 </intent-filter>
29 </activity>

<activity android:name="activity.C3"></activity>
</application> </manifest>

/activityLaunchSingleTask/res/layout/activity_main.xml

 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" > <Button
android:id="@+id/btn_c1"
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_weight="0.00"
android:text="@string/btn_c1" /> <Button
android:id="@+id/btn_c2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/btn_c2" /> <Button
android:id="@+id/btn_c3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/btn_c3" /> </LinearLayout>

activity启动模式之singleTask的更多相关文章

  1. (原创)Activity启动模式之singleTask

    android中activity有四种启动模式 standard(默认):在同一个任务栈中可以有重复的activity,基本没什么限制 singleTop:只有当此activity在栈顶时,去创建它, ...

  2. android:Activity启动模式之singleTask(一)

    先看一下standard启动模式的说明: 仅仅有一个实例.在同一个应用程序中启动他的时候.若不存在此Activity实例.则会在当前栈顶创建一个新的实例.若存在,则会把栈中在其上的其他Activity ...

  3. Activity四种启动模式之singleTask应用

    Activity启动模式设置:         <activity android:name=".MainActivity" android:launchMode=" ...

  4. Android多任务切换与Activity启动模式SingleTask之间关系的分析

    这里会以多个场景列子进行分析,在分析之前先了解一下基本的概念. Task任务:一系列Activity的集合,这些Activity以栈的形式进行排列(后进先出). 那在什么时候系统会新建一个Task任务 ...

  5. 深入Activity,Activity启动模式LaunchMode完全解析

    转载请注明出处:http://blog.csdn.net/linglongxin24/article/details/53221384本文出自[DylanAndroid的博客] 在平时的开发中,我们可 ...

  6. Activity启动模式 及 Intent Flags 与 栈 的关联分析

     http://blog.csdn.net/vipzjyno1/article/details/25463457    Android启动模式Flags栈Task   目录(?)[+] 什么是栈 栈 ...

  7. 【转】Activity启动模式 及 Intent Flags 与 栈 的关联分析

    http://blog.csdn.net/vipzjyno1/article/details/25463457    在学习Android的过程中,Intent是我们最常用Android用于进程内或进 ...

  8. Android中Activity启动模式详解

    在Android中每个界面都是一个Activity,切换界面操作其实是多个不同Activity之间的实例化操作.在Android中Activity的启动模式决定了Activity的启动运行方式. An ...

  9. Android-3 Activity启动模式

    Activity启动模式 android:launchMode="singleTask" * Standard 每次都创建一个新实例 -- TaskID不变,ActivityID改 ...

随机推荐

  1. Java 常用语法和数据结构

    Collection 首先Java中的collection都是支持泛型和类型安全 由于Java单根继承, 所以不指定, 可以在collection里面放任何对象, collection会都当作obje ...

  2. JavaScript教程3-js深入

    1.JS流程控制语句 (1).if 判断 if 语句是基于条件成立时才执行相应的代码. if...else 语句是在指定的条件成立时执行if后的代码,在条件不成立时执行else后的代码. if...e ...

  3. Unity3d依赖于平台的编译

    Unity的这一功能被命名为"依赖于平台的编译". 这包括了一些预编译处理指令,让你能够专门的针对不同的平台分开编译和运行一段代码. 此外,你能够在编辑器下运行一些代码用于測试而不 ...

  4. (4.9)SQL Server 数据库规范

    SQL Server 数据库规范 一.       命名规范 常用对象命名规范,使用帕斯卡命名法(Pascal,单词首字母大写),统一使用英文. 1.        表.英文单数名词,尽量写完整单词名 ...

  5. mapreduce中获取输入文件的路径

    InputSplit inputSplit = context.getInputSplit(); String fileName = ((FileSplit) inputSplit).getPath( ...

  6. PHP逐字符读取数据

    <?php $file = fopen("Minot.txt", "r") or exit("Unable to open file!" ...

  7. Java泛型一:基本介绍和使用

    原文地址http://blog.csdn.net/lonelyroamer/article/details/7864531 现在开始深入学习java的泛型了,以前一直只是在集合中简单的使用泛型,根本就 ...

  8. CSS 之怀疑自己的审美 2 (Day50)

    阅读目录 伪类 选择器的优先级 css 属性操作 一.伪类 anchor伪类:专用于控制链接的显示效果 ''' a:link(没有接触过的链接),用于定义了链接的常规状态. a:hover(鼠标放在链 ...

  9. 常用模块(hashlib,configparser,logging)

    常用模块(hashlib,configparser,logging) hashlib hashlib 摘要算法的模块md5 sha1 sha256 sha512摘要的过程 不可逆能做的事:文件的一致性 ...

  10. 再谈WinIO初始化异常

    再谈WinIO初始化异常     前段时间WinIO在我的新项目中总是初始化失败,有时候又是好好的,很让人费解.修改了源代码显示了很多调试信息后,也没有什么太多的收获.由于我们的工控卡必须要用这个库, ...