一、分析项目程序
- .gradle 和.idea:AndroidStudio自动生成的文件
- app:项目代码、资源等都放在这里
- build:包含在编译时自动生成的文件
- gradle: 包含gradle wrapper的配置文件,使用时会自动根据本地缓存情况决定是否需要下载gradle.
- .gitignore: 用来将指定目录或文件排除在版本控制外
- build.gradle: 项目全局gradle构建脚本
- gradle.properties : 全局gradle配置文件,在这里配置的属性会影响到项目中所有的gradle编译脚本
- gradlew 和gradlew.bat: 在命令行界面中执行graldle命令
- helloworld.iml :iml 是所有intellig idea 项目都会自动生成的文件,用于标识一个intellig idea项目
- local.properties: 用于指定本机中android sdk 路径,如果sdk位置发生改变,修改这个文件中的路径即可
- setting.gradle: 指定项目中所有引入的模块
二、了解Activity - 什么是activity
用于和用户进行交互。一个应用程序可包含零活多个activity. - Activity创建:
继承appCompatActivity ,重写onCreate 方法 ,并在AndroidMainfest中注册,销毁一个Activity用finish()方法 - Activity之间数据传递
Intent 是Android程序各组件之间交互的重要方式,可以启动Activity、service、broadcastreceiver 及传递数据等。
(1)显示Intent
Intent 有多个构造函数的重载,Intent(Context packageContext,class<?> cls)中第一个参数传一个启动活动的上下文,第二个传要启动的目标活动,使用startActivity用于启动活动。如:
Intent intent = new Intent(FirstActivity.this,SecondActivity.class);
startActivity(intent);
这种intent“意图”明确,成为显示Intent。
(2)隐式Intent
不明确指出所要启动的活动,通过指定的action 和category 来启动合适(也就是可以响应这个隐式Intent)的活动。如:在androidmanifest文件中,<activity>标签下配置如下:
<intent-filter>
<action android :name = "com.example.test.ACTION_START" />
<category android:name ="android.intent.category.DEFAULT" />
</intent-filter>
java代码中:
Intent intent = new Intent("com.example.test.ACTION_START");
startActivity(intent);
(3)传递数据
Intent通过putExtra()方法的重载,将传递的数据暂存在intent中,启动另一个activity后,再将数据取出。
intent intent = new(FirstActivity.this , SecondActivity.class);
intent.putExtra("extra_data","i am millie ");
startActivity(intent);
取数据:Intent intent = getIntent();
String data = intent.getStringExtra("extra_data");
(4)返回数据给上一个activity
Intent intent = new Intent(FirstActivity.this,SecondActivity.class);
startActivityForResult(instent,1);
返回数据逻辑:
Intent intent = new Intent();
intent.putExtra("data_return","hello");
setResult(RESULT_OK,intent);
在第一个activity中重写onactivityresult 方法得到返回的数据。 - activity生命周期
(1)返回栈
android 使用task 来管理活动,一个任务就是一组存放在栈里的活动的集合,栈称为返回栈。是后进先出的一种数据结构
(2)activity 活动状态
运行状:活动位于栈顶
暂停状态:活动不再处于栈顶,但仍可见
停止状态:不在处于栈顶,并完全不可见
销毁状态:活动从返回栈中移除
(3)activity生存期
七个方法:oncreate、onstart、onresume、onpause、onstop、ondestroy、onrestart
完整生存期:activity在oncreate 和 ondestory 之间所经历的
可见生存期:activity在onstart 和 onstop之间所经历的
前台生存期:activity在onresume 和onpause 之间经历的
(4)活动被回收
当一个activity进入停止状态,有可能会被系统回收。
activity 提供 onsaceinstancestate回调方法,可以保证活动被回收前一定会被调用
通过这个方法解决活动被回收时临时数据得不到保存问题。 - activity 启动模式
(1) standard :默认启动模式 每启动一个新的活动,都会在返回栈中入栈,并处于栈顶位置,不管这个活动是否已经在返回栈中存在,每次启动都会创建该活动的一个新的实例。
(2) singleTop :在启动活动时如果发现返回栈的栈顶已经是该活动,那么就直接使用它,不会再创建新的活动实例。
(3) singleTask : 每次启动该活动时系统会在返回栈中检查是否存在该活动实例,如果已存在就直接使用,并把该活动之上的所有活动都统统出栈,如果没有就创建一个新的活动实例。
(4) singleInstance : 启用该模式的活动会启用一个新的返回栈来管理这个活动,不管是哪个应用程序来访问这个活动,都共用同一个返回栈,解决了共享活动实例的问题。