• 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启动模式之singleTask(二)

android:Activity启动模式之singleTask(二)

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

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

android:Activity启动模式之singleTask(二)


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

只有一个实例,在同一个应用程序中启动他的时候,若不存在此Activity实例,则会在当前栈顶创建一个新的实例,若存在,则会把栈中在其上的其它Activity实例销毁掉,并调用此实例的OnNewIntent方法,如果是在别的应用实例中启动它,则会新建一个栈,并在该栈中启动这个Activity,然后我在这个Activity实例中再打开新的Activity这个新的实例会在一个栈中

上篇文章我们已经理解这句:只有一个实例,在同一个应用程序中启动他的时候,若不存在此Activity实例,则会在当前栈顶创建一个新的实例,若存在,则会把栈中在其上的其它Activity实例销毁掉,并调用此实例的OnNewIntent方法

这篇文章我们一个实例来理解下半句话:如果是在别的应用实例中启动它,则会新建一个栈,并在该栈中启动这个Activity,然后我在这个Activity实例中再打开新的Activity这个新的实例会在一个栈中

在手机上需要安装两个程序。其中一个程序(singleTask)的界面是这样的,Activity2是singleTask的启动模式

\
另外一个程序(OpenActivity2)的界面是这样的
\

好了 然后附上代码

singleTask:

xml布局文件 两个按钮 一个用于打开MainActivity(Activity1),一个用于打开OtherActivity(Activity2)

MainActivity和OtherActivity同时使用这个布局文件,并为其按钮添加点击事件

MainActivity(Activity1).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(Activity2).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");
	}
}

别忘记在AndroidManifest.xml文件中配置OtherActivity(Activity2)的信息
        <activity android:launchmode="singleTask" android:name="com.example.singletop.OtherActivity">
            <intent-filter>
                <action android:name="android.intent.action.Activity2">

                <category android:name="android.intent.category.DEFAULT">
            </category></action></intent-filter>
        </activity>

然后是另外一个程序

OpenActivity2:

布局文件,只有一个按钮,用来打开启动模式为singleTask的Activity2

按钮通过隐式意图打开Activity2
MainActivity.class
package com.example.openactivity2;

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 {

	private Button btn_open2;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		btn_open2=(Button) findViewById(R.id.button1);
		btn_open2.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View arg0) {
				// TODO Auto-generated method stub
				Intent intent=new Intent();
				intent.setAction("android.intent.action.Activity2");
				intent.addCategory(Intent.CATEGORY_DEFAULT);
				startActivity(intent);
			}
		});
	}


}
好了 。

我们进行这样的操作。

OpenActivity->Activity2->Activity1->Activity1->Activity2

在栈中是什么情况呢?

\

会创建两个Activity栈。这是因为当我们打开OpenActivity2时创

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

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

  • android:Activity启动模式之singleTask(一)
  • android:Activity启动模式之singleTask(二)

相关文章

  • 2017-05-26Looper.prepare()和Looper.loop(),looper.prepare
  • 2017-05-26安卓第一天笔记,安卓第一天
  • 2017-05-26Retrofit+RxJava(1)-在Android Studio中配置,retrofitrxjava
  • 2017-05-26使用flume+kafka+storm构建实时日志分析系统
  • 2017-05-26Android安全攻防战,反编译与混淆技术完全解析(下)
  • 2017-05-26去除GridView选中时的蓝色背景,gridview选中蓝色
  • 2017-05-26Android滑动删除功能,android滑动删除
  • 2017-05-26Linux内核系列—8.操作系统开发之时钟中断,linux内核
  • 2017-05-26EventBus的使用,EventBus使用
  • 2017-05-26硅谷社交2--欢迎页面,硅谷社交2--

文章分类

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

最近更新的内容

    • Docker+Redis3集群环境搭建
    • ListView和Adapter的配合使用以及Adapter的重写,listviewadapter
    • 2016年Android市场的8个大胆预测,2016年android
    • msm8909+android5.1.1--打开调试(debug)串口
    • Android(Linux)实时监测串口数据,android实时监测
    • 编译器开发系列--Ocelot语言7.中间代码,编译器--ocelot
    • Android开发必看-快速提高 Android 开发效率的 Web 工具,android必看
    • 在Android中用Kotlin的Anko运行后台任务(KAD 09),kotlinanko
    • Android_事件纷发
    • 想要了解Kotlin,看这个就够了,想要Kotlin,

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

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