• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >Android > android:Activity启动模式之singleTop

android:Activity启动模式之singleTop

作者:网友 字体:[增加 减小] 来源:互联网 时间:2017-05-26

网友通过本文主要向大家介绍了activity singletop,android singletop,singletop模式,singletop,singletop singletask等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

android:Activity启动模式之singleTop


先看一下singleTop启动模式的说明:

可以有多个实例,但是不允许此Activity的多个实例叠加。即,如果此Activity有实例在栈顶的时候,启动这个Activity,不会创建新的实例而会调用其OnNewIntent方法,如果不在栈顶则创建新的实例

下面我们通过一个实例来仔细了解

这是在手机上的效果

\

首先是xml布局文件,共两个按钮

 


创建两个继承Activity的类,分别为MainActivity和OtherActivity,代码基本全部相同,都同时使用上面的xml布局文件

 

MainActivity.class

 

package com.example.singletop;

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class MainActivity extends Activity implements OnClickListener{
	private Button btn_open1,btn_open2;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		//设置标题为Activity1
		setTitle("我是Activity1");
		btn_open1=(Button) findViewById(R.id.button1);
		btn_open2=(Button) findViewById(R.id.button2);
		btn_open1.setOnClickListener(this);
		btn_open2.setOnClickListener(this);
	}

	@Override
	public void onClick(View v) {
		// TODO Auto-generated method stub
		switch(v.getId()){
		case R.id.button1:
			startActivity(new Intent(MainActivity.this,MainActivity.class));
			break;
		case R.id.button2:
			startActivity(new Intent(MainActivity.this,OtherActivity.class));
			break;
		}
	}
}
OtherActivity.class

 

 

package com.example.singletop;

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class OtherActivity extends Activity implements OnClickListener{
	private Button btn_open1,btn_open2;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		//设置标题为Activity2
		setTitle("我是Activity2");
		btn_open1=(Button) findViewById(R.id.button1);
		btn_open2=(Button) findViewById(R.id.button2);
		btn_open1.setOnClickListener(this);
		btn_open2.setOnClickListener(this);
	}

	@Override
	public void onClick(View v) {
		// TODO Auto-generated method stub
		switch(v.getId()){
		case R.id.button1:
			startActivity(new Intent(OtherActivity.this,MainActivity.class));
			break;
		case R.id.button2:
			startActivity(new Intent(OtherActivity.this,OtherActivity.class));
			break;
		}
	}
	//在此方法中打印是否调用这个方法的日志
	@Override
	protected void onNewIntent(Intent intent) {
		// TODO Auto-generated method stub
		super.onNewIntent(intent);
		Log.d("OtherActivity", "OnNewIntent");
	}
}

至于MainActivity和OtherActivity的区别:

MainActivity是standard启动模式

OtherActivity是singleTop启动模式

在AndroidManifest.xml中MainActivity默认就是standard启动模式

配置一下OtherActivity就好

        <activity android:name="com.example.singletop.OtherActivity" android:launchmode="singleTop"></activity>
我们举几个例子。

Activity1->Activity2->Activity1->Activity2

我们做完这些 在栈中的情况是

\

然后我们看看日志信息 为空 说明并没有调用onNewIntent方法,因为我们在创建启动模式为singleTop的Activity2时Activity2不在栈顶。需要按四次返回才能返回到主界面。

2.Activity1->Activity2->Activity2->Activity2

这个时候栈里面的情况是什么样的呢?

\

没错 就是这样的 。为什么呢?因为我们在创建第三个Activity2时,因为Activity2为singleTop的启动模式,发现此时有在第二个创建的Activity2为栈顶,所以不会创建新的实例而会调用其OnNewIntent方法。创建第四个Activity2也是同样的道理。这时候我们只需要按两次返回键就能返回到主界面。下面看看日志信息

\

看到这里的小伙伴的你,懂了这种启动模式了吗?

在加深一下印象吧~

singleTop启动模式的说明:

可以有多个实例,但是不允许此Activity的多个实例叠加。即,如果此Activity有实例在栈顶的时候,启动这个Activity,不会创建新的实例而会调用其OnNewIntent方法,如果不在栈顶则创建新的实例

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • android:Activity启动模式之singleTop

相关文章

  • 2017-05-26android 在5.0以后不允许使用隐式Intent方式来启动Service,androidintent
  • 2017-05-26ViewPager结合view无限滑动,viewpagerview滑动
  • 2017-05-26安卓开源项目周报0222,安卓开源项目0222
  • 2017-07-22android自定义圆角背景实现富文本标题展示
  • 2017-05-26RelativeLayout的位置属性总结,relativelayout总结
  • 2017-05-26网上商城4--首页二级分类的查询,4--二级分类
  • 2017-05-26Android--Activity四种启动模式
  • 2017-05-26Android实战简易教程-第七十一枪(异步网络下载网络图片及图片廊制作)
  • 2017-05-26MirrorNetwork 基于jmdns和netty的android网络通信开源库,mirrornetworkjmdns
  • 2017-05-26Android 系统版本&amp;API对照表,android系统版本

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • Android网络编程(四)从源码解析Volley
    • android开发之路03,android之路03
    • 使用WakeLock使Android应用程序保持后台唤醒,wakelockandroid
    • Android-绘制爱心,android-绘制
    • Android天天数钱游戏项目源码,android项目源码
    • Android Studio系列-Activity单元测试
    • Android Studio同时打开多个项目,androidstudio
    • 安卓第五天笔记-对话框,安卓第五天笔记
    • Android studio1.5.1 NDK配置开发
    • Android-ViewPager的使用

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有