Android第一行代码学习笔记Chapter1&2

Android第一行代码学习笔记

第一章-开始启程 你的第一行代码

日志工具 Log

Log,v
Log.d
Log.i
Log.w
Log.e
控制台上可以通过 Edit Filter Configuration自定义过滤器

第2章 从看得到的入手——探究活动


Toast使用方法:

makeText()创建 调用show()

3个参数:

  • Context(Activity本身就是一个Context)

  • 显示的文本内容

  • 显示的时长


Menu
  1. 在res中建menu 在menu中创建main,xml
  2. 在Activity中重写 onCreateOptionsMenu方法 再调用getMenuInflater方法得到MenuInflater对象 再调用其inflate()方法

inflate()方法两个参数

  • 通过那一个资源文件来创建菜单
  • 菜单项将添加到哪一个Menu对象中

销毁活动

finish();


Intent

组件交互,指明当前组件要执行的侗族,在不同的组件之间传递数据

使用显式Intent方法:

1.构建意图
Intent(Context packageContext,Classcls)
两个参数

  • 启动活动的上下文
  • 想要启动的目标函数
    2.使用意图
    startActivity()方法适用于启动活动的,让他接收一个Intent参数
    (将Intent传入startActivity中即可)
使用隐式Intent方法:

不明确指出活动 通过指定action category 交由系统分析Intent 选择合适的活动
使用方法:

  1. 在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启动活动


你可能感兴趣的:(Android)