activity即活动,是一种包含用户界面的组件,用于与用户进行交换
 
创建activity类
1.类继承Activity, activity传递一个bundle对象,可以获得onSaveInstanceState(Bundle outstate)保存的Bundle对象
onSaveInstanceState(Bundle outstate)在程序置后台、或跳转到另一个activity,以及被系统回收时都会调用该方法
onSaveInstanceState(Bundle outstate)重写的一个例子如下:
@Override
public void onSaveInstanceState(Bundle bundlestatue){
super.onSaveInstanceState(bundlestatue);
Log.i("firstActiviy","正在调用保存bundle的内容");
bundlestatue.putString("testsavainstancestate","testsavainstancestate_value");
}
2.重写onCreate方法
3.onCreate方法中为活动设置布局:setContentView(R.layout.layout名);
 
一个创建activity的例子
public class SecondActivity extends Activity{
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.secondlayout);
Log.i("SecondActivity","启动第二个activity");
String activity1=getIntent().getStringExtra("data");
Log.i("SecondActivity","从前一个activity带来的数据:"+activity1);
}
AndroidManifest.xml文件中注册 activity
          1.使用标签<activity></activity>
          2.属性android:name=".xxactivity名字",名字使用.实际是省略了包名,因为<manifest>中已经定义了package名字
          3.指定主活动的activity,即启动app时展示的界面,<activity>中增加下面的内容
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
                    
注册主activity的例子
<activity android:name=".ActivityTest">

    <intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
 
创建布局layout文件
布局是XML文件,在res->layout目录下,New->Layout resource file
定义id语法(@后加+号表示创建):@+id/id名字
 
然后activity设置布局时可以使用刚创建的布局文件setContentView(R.layout.layout名);
 
 
activity之间交互
一、activity跳转
1.显示调用
Intent intent=new Intent(ActivityTest.this,SecondActivity.class);
startActivity(intent);
 
说明:
1.1定义Intent对象,第一个参数为当前的activity,第二个为要跳转到的activity的名字加.class
1.2.startActivity(intent)跳转,传递一个Intent对象
           
 
2.隐式调用
activity在AndoridManifest.xml中的注册指定<intent-filter>的action和category(默认是DEFAULT)
<activity android:name=".SecondActivity">
<intent-filter>
<action android:name="android.intent.action.ACTION_START"></action>
<category android:name="android.intent.category.DEFAULT"></category>
</intent-filter>
</activity>
 
activity中隐式调用方法如下:
Intent intent=new Intent("com.example.sunmin.ACTION_START");
startActivity(intent);
               
说明:
2.1.AndoridManifest.xml中注册activity,指明action的android:name。如果需要category也可以加上
2.2.定义Intent对象,传递参数为active注册的android:name
2.3.如果需要过滤Category,可以用下面方法做过滤\nintent.addCategory("com.example.sunmin.TESTcategory");
 
 
 二、activity传递数据到下一个activity
第一步:调用方,在Intent对象中传递数据\nintent.putExtra("key的名字","key的数据");
第二步:被打开的activity,获得调用方传递的数据,getIntent()获得用于启动activity的intent
String data=getIntent().getStringExtra("key的名字");
 
getStringExtra():获得字符串
getIntExtra():获得整型数据         
getBooleanExtra():获得布尔型数据         
       
 
三、返回数据给上一个activity
第一步:第1个activity通过startActivityForResult(intent,1);启用第2个activitystart
ActivityForResult(),第一个入参为启用的activity,第二个为请求的requestCode
 
第二步:第2个activity使用setResult(RESULT_OK, intent);
setResult(),第一个参数为resultCode返回值,第二个参数为传递data的intent
被activitystartActivityForResult()启动的activity销毁finish()时,会回调第一个activity的onActivityResult()方法
 
第三步:第1个activity重写onActivityResult()来处理
因为可能要监测多个activity回调的数据,所以可以使用requestCode来区别不同的activity
销毁activity2时的数据
 
@Override
public void onActivityResult(int requestCode,int resultCode,Intent data){
switch (requestCode){
case 1:
if (resultCode==RESULT_OK){
String returndata=data.getStringExtra("data2");
Log.i("activity1","这是我从第二个activity回调的内容:"+returndata);
}
break;
default:
} }
activity生命周期
onCreate
启动一个新的activity,新建活动时调用
 
onStrat
打开activity,活动由不可见变为可见时调用
 
onResume
活动已显示,准备好可以与UI交互时调用,此时活动处于栈顶
 
onPause
系统准备打开另一个activity时调用,此时会释放一些资源。dialog弹框弹出的时候会调用这个方法
 
onStop
活动由可见变为不可见时调用
 
onDestory
活动被销毁时调用,然后状态变为销毁
 
onRestart
活动由停止变为启动状态时调用
 
activity活动的启动模式
activity有一个活动栈来管理activity,展示栈顶的activity,销毁activity(调用finish()方法)时会从栈里将activity移除
 
在AndroidManifest.xml定义,注册activity时配置的【android:launchMode】属性         
 
standard
默认的启动模式,每次创建activity,都会新建一个放到活动栈,即使重复的也会再新建一个活动
 
singleTop
与standard相比,如果栈顶已经是要创建的activity,则不会创建新的activity。如果不在栈顶则新建一个活动
 
singleTask
如果活动栈中存在要创建的activity,则将activity上的所有栈onDestroy出栈,调用要创建activity的instant()方法放到栈顶
 
singleInstance 
activity放在一个单独的栈中,所有要创建这个activity的活动都直接调用这个栈的栈顶。(所以如果调用方按返回,会先从他自己的栈一级一级出栈,不会直接调用到这个创建的activity)
 

Android学习路-activity活动的更多相关文章

  1. Android之路-------Activity的详解

    前言 由于接近放假,公司在赶项目所以前段LP比较忙,没什么时间总结和写博客,只是准备睡觉的时候看看书,每天看的不算多,大概10多页左右吧,不过每天坚持如此的话那也是一个庞大的数字. 今天LP的任务完成 ...

  2. Android学习笔记——Activity的启动和创建

    http://www.cnblogs.com/bastard/archive/2012/04/07/2436262.html Android Activity学习笔记——Activity的启动和创建 ...

  3. Android学习总结——Activity之间传递参数

    核心内容:一.在 Activity 之间传递简单数据二.在 Activity 之间传递复杂数据 三.在 Activity 之间传递自定义值对象   软件环境:Android Studio   一.在 ...

  4. android学习之activity

    Activity 的生命周期 和 J2ME 的 MIDlet 一样,在 android 中,Activity 的生命周期交给系统统一管理.与 MIDlet 不同的是安装在 android 中的所有的 ...

  5. Android学习之Activity初步

    Activity作为Android的第一步接触的概念,在学习中将初步的认识总结下来,以便后续的回顾与反思. 1.在用Android Studio生成第一个helloworld应用程序运行在手机上时,发 ...

  6. 10月9日Android学习笔记:活动与服务之间的通信

    最近在照着<第一行代码>这本书来学安卓,顺便记下笔记.主要的内容是Android中服务的第二种启动方式,通过活动绑定服务来启动服务,实现活动与服务之间的通信. 一. 首先创建一个服务类 p ...

  7. Android学习总结——Activity状态保存和恢复

    Android中启动一个Activity如果点击Home键该Activity是不会被销毁的,但是当进行某些操作时某些数据就会丢失,如下: Java class: package com.king.ac ...

  8. android学习四---Activity和Intent

    1.android项目资源深入了解 在深入学习android之前,先好好玩玩手机上的应用,大部分程序都有一个图标,点开图标,程序启动,一定时间后,程序会跳转到第一个界面,比如手机QQ,点开图标,会跳出 ...

  9. Android学习之启动活动的最佳写法

    •开始热身 通过之前的学习,我们现在可以很容易的启动一个活动: 首先通过 Intent 构造出当前的 "意图",然后调用  startActivity()  方法将活动启动起来: ...

随机推荐

  1. tkinter pyqt同时呈现两个窗口

  2. hive执行报错:Both left and right aliases encountered in JOIN 's1'

    原因:两个表join的时候,不支持两个表的字段 非相等 操作. 可以把不相等条件拿到 where语句中. 例如: right JOIN test.dim_month_date p2 on p1.mon ...

  3. .bat脚本基本命令语法 http://www.cnblogs.com/iTlijun/p/6137027.html

    这个是我找到的非常好的一篇文章了: 目录批处理的常见命令(未列举的命令还比较多,请查阅帮助信息)     1.REM 和 ::     2.ECHO 和 @     3.PAUSE     4.ERR ...

  4. leetcode1005

    func largestSumAfterKNegations(A []int, K int) int { sort.Ints(A) var negatives int var zeros int va ...

  5. 选择、操作web元素-2

    11月3日 等待web元素的出现 例子:百度搜索松勤网,点击操作后不等待页面刷新,下面选择页面元素的时候,该元素还是未出现 sleep方案的弊病:固定的等待时间,导致测试用例执行时间很长 为什么cli ...

  6. 机器学习入门-文本数据-构造Ngram词袋模型 1.CountVectorizer(ngram_range) 构建Ngram词袋模型

    函数说明: 1 CountVectorizer(ngram_range=(2, 2)) 进行字符串的前后组合,构造出新的词袋标签 参数说明:ngram_range=(2, 2) 表示选用2个词进行前后 ...

  7. day03-数据类型

    数据类型 一.介绍 存储引擎决定了表的类型,而表内存放的数据也要有不同的类型,每种数据类型都有自己的宽度,但宽度是可选的 mysql常用数据类型概括:#1. 数字: 整型:tinyint.int.bi ...

  8. Windows下如何查看某个端口被谁占用

    开发时经常遇到端口被占用的情况,这个时候总是很令人抓狂,知道被哪个进程占用还好,结束就是了,要是不知道我们该怎么办呢? 我告诉大家一个方法,^_^. 1. 开始—->运行—->cmd,或者 ...

  9. windows下面的java项目打成jar放到XShell终端上面进行远程调试

    前言: java项目打成jar放到linux上面运行,但是linux上面没有eclipse不能进行debug,所以要在windows的eclipse中进行远程调试. 需要注意的是!!!-->在e ...

  10. vue - @click 用到的修饰符

    1.vue提供的方法 .stop .prevent .capture .self .once .passive <!-- 阻止单击事件继续传播 --><a v-on:click.st ...