activity启动模式之singleTask
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的更多相关文章
- (原创)Activity启动模式之singleTask
android中activity有四种启动模式 standard(默认):在同一个任务栈中可以有重复的activity,基本没什么限制 singleTop:只有当此activity在栈顶时,去创建它, ...
- android:Activity启动模式之singleTask(一)
先看一下standard启动模式的说明: 仅仅有一个实例.在同一个应用程序中启动他的时候.若不存在此Activity实例.则会在当前栈顶创建一个新的实例.若存在,则会把栈中在其上的其他Activity ...
- Activity四种启动模式之singleTask应用
Activity启动模式设置: <activity android:name=".MainActivity" android:launchMode=" ...
- Android多任务切换与Activity启动模式SingleTask之间关系的分析
这里会以多个场景列子进行分析,在分析之前先了解一下基本的概念. Task任务:一系列Activity的集合,这些Activity以栈的形式进行排列(后进先出). 那在什么时候系统会新建一个Task任务 ...
- 深入Activity,Activity启动模式LaunchMode完全解析
转载请注明出处:http://blog.csdn.net/linglongxin24/article/details/53221384本文出自[DylanAndroid的博客] 在平时的开发中,我们可 ...
- Activity启动模式 及 Intent Flags 与 栈 的关联分析
http://blog.csdn.net/vipzjyno1/article/details/25463457 Android启动模式Flags栈Task 目录(?)[+] 什么是栈 栈 ...
- 【转】Activity启动模式 及 Intent Flags 与 栈 的关联分析
http://blog.csdn.net/vipzjyno1/article/details/25463457 在学习Android的过程中,Intent是我们最常用Android用于进程内或进 ...
- Android中Activity启动模式详解
在Android中每个界面都是一个Activity,切换界面操作其实是多个不同Activity之间的实例化操作.在Android中Activity的启动模式决定了Activity的启动运行方式. An ...
- Android-3 Activity启动模式
Activity启动模式 android:launchMode="singleTask" * Standard 每次都创建一个新实例 -- TaskID不变,ActivityID改 ...
随机推荐
- XML 解析之 jaxp 解析器
XML 的解析方式有两种方式: DOM 解析和 SAX 解析. DOM 解析: 根据 XML 的层级结构, 在内存中分配一个树形结构, 把 XML 的标签, 属性和文本都封装成对象. 优点: 可以实现 ...
- python基础之类的进阶
一.__setitem__,__getitem,__delitem__ #把对象操作属性模拟成字典的格式 class Foo: def __init__(self,name): self.name=n ...
- openwrt undefined reference to ‘getpwent_r’
由于须要安装 su sudo useradd groupadd chown login 等用户管理命令,会訪问passwd文件. 用到了 getpwant_r 函数.详细是哪个命令引起的,临时不知. ...
- 系列文章(三):WAPI为无线局域网WLAN安全而生——By Me
导读:无线局域网(又称为WLAN,Wireless Local Area Network),其应用领域不断拓展,无线接入所具有的前所未有的连接性和自动化能够为人们带来巨大的便利和商机.与此同时,在信息 ...
- 七牛云 如何配置域名的 CNAME
CNAME 简介 CNAME 即指别名记录,也被称为规范名字.这种记录允你将多个名字映射到同一台计算机. 当需要将域名指向另一个域名,再由另一个域名提供 ip地址,就需要添加 CNAME 记录. 为什 ...
- unity3d相关资源
http://pan.baidu.com/s/1kTG9DVD GUI源码
- 006-shiro授权
一.授权流程 二.三种授权方式 2.1.编程式:通过写if/else 授权代码块完成: Subject subject = SecurityUtils.getSubject(); if(subject ...
- SQL基础三
一.SQL ORDER BY 子句 ORDER BY 语句用于对结果集进行排序,默认按照升序对记录进行排序,如果需要按照降序进行排序,需要在后面追加关键字DESC.应用如下: 原始的表:Orders表 ...
- iOS学习之数据持久化详解
前言 持久存储是一种非易失性存储,在重启设备时也不会丢失数据.Cocoa框架提供了几种数据持久化机制: 1)属性列表: 2)对象归档: 3)iOS的嵌入式关系数据库SQLite3: 4)Core Da ...
- mysql 练习题(Day44)
init.sql文件内容 /* 数据导入: Navicat Premium Data Transfer Source Server : localhost Source Server Type : M ...