0x00 前言
又看了一遍“第一行代码”的第二版,这次跟着书里面的代码随便敲了一下,顺便写一遍读书笔记
0x01 Android项目中的资源
src: 各种java程序在此,包括主程序
gen: 最重要的是R.java,所有res资源都在这里编号,通过R.xx.xx或@xx查询
res: 各种资源都在这里,包括drawable, layout, values等
另外还有menifest文件,统筹兼顾全局的,Android四大组件都要在此注册。
重点说一下gradle,这里有两个build.gradle目录,一个在项目的最外层,负责项目全局的构建,另外一个build.gradle在app模块的构建脚本,里面有超级多的构建配置,关于gradle会另外在自行学习一点
0x02 Activity
创建Activity步骤:
1、首先,在app目录右击创建一个空的activity,重写Activity的onCreate()方法
2、建立布局文件并关联,用setContentView(R.layout.myactivity)将布局加载进来。
3、所有四大组件的使用,都需要在AndroidManifest.xml文件中注册。AS自动帮我解决了,下面是手动方式
注册方法为:
在
4、加一个button到新创建的activity,然后用toast对象的show方法进行输出提示
public class MainActivity extends AppCompatActivity { |
0x03 Intent
- 显式Intent
首先,按照上面的步骤重新创建一个SecondActivity(记得注册),采用Intent实现跳转
Button button2 = (Button)findViewById(R.id.button_2); |
- 隐式Intent
隐式Intent并不能实现直接跳转,需要指定两个条件(intent-filter):action和category。要两个同时匹配才能相应这个intent。
intent-filter在注册activity时添加,intentfilter中只能有一个action,但可以有多个category,满足其中一个category即可。
跳转方法为:
//使用隐式Intent调用第三个page,Category使用默认的,自定义的实验失败 |
使用隐式Intent的系统内置方法,打开系统编写的activity,比如浏览器,打电话等
使用Intent传递数据
//使用隐式Intent调用系统浏览器界面并打开百度,并传输数据到BrowserActivity |
0x04 activity生存期
完整生存期:onCreate() -> onDestory()
可见生存期:onStart() -> onStop()
前台生存期:onResume() -> onPause()
0x05 activity的启动模式
四种启动模式,可以在
- standard:打开activity,就放入栈顶
- singleTop:打开activity,检查栈顶是否已经存在该activity,存在了就不创建。不存在才创建。不过,如果该activity不在栈顶,但也存在,则也会重新创建一个。
- singleTask:检查整个返回栈,如果存在某个activity,则不会重新创建。
- singleInstance:创建一个activity,重新在一个新的返回栈(或Task)中创建,该activity与其他activity不在同一个Task中,其他程序也可以调用这个activity的实例。