Android第一行代码学习笔记
第一章-开始启程 你的第一行代码
日志工具 Log
Log,v
Log.d
Log.i
Log.w
Log.e
控制台上可以通过 Edit Filter Configuration自定义过滤器
第2章 从看得到的入手——探究活动
Toast使用方法:
makeText()创建 调用show()
3个参数:
-
Context(Activity本身就是一个Context)
-
显示的文本内容
-
显示的时长
Menu
- 在res中建menu 在menu中创建main,xml
- 在Activity中重写 onCreateOptionsMenu方法 再调用getMenuInflater方法得到MenuInflater对象 再调用其inflate()方法
inflate()方法两个参数
- 通过那一个资源文件来创建菜单
- 菜单项将添加到哪一个Menu对象中
销毁活动
finish();
Intent
组件交互,指明当前组件要执行的侗族,在不同的组件之间传递数据
使用显式Intent方法:
1.构建意图
Intent(Context packageContext,Class<?>cls)
两个参数
- 启动活动的上下文
- 想要启动的目标函数
2.使用意图
startActivity()方法适用于启动活动的,让他接收一个Intent参数
(将Intent传入startActivity中即可)
使用隐式Intent方法:
不明确指出活动 通过指定action category 交由系统分析Intent 选择合适的活动
使用方法:
- 在manifest里 通过在里配置内容 指定action 和category
2.Intent( 包名 .ACTION_START)
启动其他程序(多程序之间功能共享)
1.指定intent的action
2.Uri.prase方法将网址字符串解析成uri对象
3.调用setData()方法 将对象传进去
标签中盘配置标签 指定活动响应什么类型的数据
- scheme写一部分 如http
- host 主机名 如www.baidu.com
- port 数据端口部分 紧随主机名之后
- path 主机名和端口之后的部分
- mimeType 指定可以处理的数据类型(通配符)
传递数据
1. 把想要传递的数据暂存在Intent中
2.启动另一个活动后 把这些数据再从Intent中取出就可以了
putExtra方法
两个参数:1.键 从Intent中取值
2.真正要传递的数据
String data="Hello SecondActivity";
Intent intent=new Intent (MainActivity.this,SecondActivity.class);intent.putExtra("extra_data",data);
Intent intent=getIntent();、
String data= intent.getStringExtra ("extra_data");Log.d("SecondActivity",data);
活动销毁时返回数据给上一个活动
startActivityForResutl() 启动活动并期望在活动销毁的时候能够返回结果给上一个活动
两个参数:
- Intent
- 请求码(判断数据来源)
再被启动的活动被销毁之后会回调上一个活动的onActivityResutl方法
3个参数: - requestCode 启动活动时传入的请求码
- resultCode 返回数据时传入的处理结果
- data 携带返回数据的Intent
步骤:1通过requestCode判断数据来源
2.通过resultCode判断处理结果是否成功
3.从data中取值并打印
setResult() 向上一个活动返回数据
两个参数
- 向上一个活动返回处理结果 RESULT_OK RESULT_CANCELED
- 把带有数据的Intent传递回去
按back键返回 数据 用onBackPressesd方法
返回栈
活动状态
1.运行2.暂停(不处于栈顶但仍然可见)3.停止4.销毁
生存期
onCreate() 初始化
onStart() 不可见变可见时调用
onResume() 准备好和用户交互时调用 栈顶 运行
onPause() 系统准备去其启动或恢复另一个活动时调用 释放一些资源 保存一些关键数据
onStop() 完全不可见时调动
onDestory() 被销毁前调用 之后活动状态变为销毁状态
onRestart() 停止状态变为运行状态之前调用
活动的三个生存期
完整生存期 :Create到Destory 初始化到释放内存
可见生存期 :Start到stop 活动对用户可见 可能无法交互
管理资源 加载 释放
前台生存期 :Resume到Pause之间 运行状态 可交互
onSaveInstanceState() 保证在活动被回收之前一定会被调用(解决活动被回收时临时数据得不到保存的问题)
两个参数
1.键 用于从Bundle中取值
2.真正要保存的内容
活动的启动方式
在AndroidManifest.xml中通过给标签指定 android:launchMode属性来选择启动
-
standard 每启动一个新活动都会在返回栈中入栈,并处于站定
系统不会在乎这个活动是否已经在返回栈中存在,每次启动都会新建一个 -
singleTop 在启动活动时发现是栈顶活动,则认为可以直接使用 不会创建新的活动
-
singleTask 启动活动时系统检查返回栈中是否存在该活动的实例,如果存在则直接使用该实例,并把这个活动之上的所有活动出栈。没有发现的话就创建一个新的活动实例。
(指定了不同的taskAffinity也会启用一个新的返回栈) -
singleInstance 启用一个新的返回栈(为了允许其他程序可以调用某程序中的活动 共享活动实例)
实践Tips
知晓当前活动:
1.新建一个class 继承AppCompatActivity
2.并在OnCreate()中获得当前实例的类名 getClass().getSimpleName
3.其他Activity继承这个class
随时随地退出程序:用专门的集合类对活动管理
ActivityCollector类中用List暂存活动
addActivity() 向List中添加一个活动
removeActivity() 从List中移除活动
finishAll() 全销毁
在想要退出的地方调用ActivityCollector.finishAll()
杀掉进程 killProcess 1个参数:进程id 通过myPid()方法获得当前程序的进程id
启动活动的最佳写法:actionStart()
在该方法中构建Intent 通过actionStart()传递需要的参数 最后调用startActivity启动活动