《第一行代码》复习遗漏重难点整理1-2章
来源:互联网 发布:阶乘java递归方法 编辑:程序博客网 时间:2024/06/10 23:16
1.1Android系统架构
Android的系统架构大致可以分为四层架构,5层区域
四层架构:Linux内核层,系统运行库层(库层,运行时库),应用框架(API),应用层
五大区域(Linux内核层,系统运行库层(库层,运行时库),应用框架(API),应用层) 只 是系统运行层分为了两个区域,运行时库和库层
1.2Android应用开发特色
1、四大组件(活动,服务,广播接收器,内容提供器)
2、丰富的控件
3、SQLite数据库
4、地理位置定位
5、强大的多媒体
6、传感器
1.3各个文件夹的内容
gen 存放R.java(自动添加我们添加的ID)
assets,主要存放一些随系统打包的文件,程序运行时可以动态读取这些文件。webView加载本地网页,所有网页相关文件都存放在这里。
AndroidManifest.xml 还可以重新制定最低兼容版本和目标版本
project.properties 通过一行代码指定所使用的SDK
<activity
.............................
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
表示这个活动是住活动。
_________________________________________________________________________分割线
@Override
public boolean onCreateOptionsMenu(Menu menu){
getMenuInflater().inflate(R.menu.hello_world,menu);
return true;
}
}
这个是用来创建菜单的。在res里新建一个菜单文件夹,在里面新建一个Xml用来配置菜单
————————————————————————分割线————————————————————
在xml里面比如
android:text="@string/hello_world"
这里面hello_world是一个键值对应value文件夹里面string.xml里面的
<resources>
<string name="hello_world">Hello world!</string>
_____________________________分割线_________________________________________
res里面之所以有多个drawable文件夹是为了适应不同分辨率(比如平板和手机)
______________________________________________________________________________
AndroidManifst.xml可以更换应用程序图标。string.xml里面则是可以改应用名
_____________________________分割线__________________________________________
Log 优先级顺序v(琐碎信息)<d(调试信息)<i(重要数据信息)<w(警告)<e(错误)
里面传入两个参数,一个是tag(一个标签,用于过滤器的过滤功能),一个是打印的内容(msg 即是message)
____________________分割线__________________________________________________
System.out.println()的缺点,打印日志没有级别分类,不能确定打印时间,不能添加过滤器
___________________________________分割线____________________________________
第二章
2.1活动是什么
活动是一种可以包含用户界面的组建,主要用于和用户进行交互。
——————————————————————————————
android程序设计讲究逻辑和视图的分离
——————————————————————————————
android:id是给当前元素定义一个标识符
——————————————————————————————
所有的活动都要注册不然容易闪退崩溃。
————————————————分割线————————————————————————
程序其实可以不加主活动申明,不过这种程序一般无法在启动器看到或者打开,一般作为第三方服务以供调用,比如支付宝快捷支付
————————————————分割线——————————————————————————————
隐藏标题栏的方法: 在加载布局前(setContentVIew)这样写 requestWindowFeature(Window.FEATURE_NO_TITLE) 不在加载布局前会报错
————————————————————————分割线——————————————————————————————————
findViewById()方法返回的是一个View对象,所以才要在前面颊(Button)这种进行下转型。
——————————————————————————————————————————————分割线————————————
怎样配置Menu的Xml
<..............................................
<item
android:id="@+id/add_item"
android:id="@+od/add"/>
</menu>
item标签用来创建一个菜单项
title给菜单项名字
之后在活动中定义响应事件 ,就是点击菜单项后的事件
public boolean onOptionsItemSelected(MenuItem item){
switch(item.getItemId()){
case:
case:
default:
}
return true;
}
_________________________________________________________分割线
显式Intent
活动要注册!
Intent intent=new Intent(上下文,目标类);
startActivity(intent);
}
隐式Intent
1、对目标类的注册(AndroidManifest。xml)进行修改
增加<intent -filter>
<action android:name="com.example.activitytest.ACTION_START"
<category android:name="android.intent.category.DEFAULT"/>
2、在Intent intent=new Intent(传入action)
startActivity(intent);
只有action和category都符合的活动才会被调用。如果有两个以及以上,则会弹出对话框让你选择一个
Category可以调用addCategory(传入category),上面默认的category不需要传入。
一个Intent里面只可以传入一个action,但可以传入多个category。
如果intent没有可以响应的东西,就会崩溃或者闪退
————————————————————————————
在intent中传入Intent。ACTION_VIEW
然后intent.setData(Uri.parse("网址")可以调用网页
————————————————————————————————
注册文件中
活动里面的data标签里面可以指定活动可以响应的活动可以响应什么类型的数据。scheme是协议,host是主机名(www....com) port是端口部分。mimeType数据类型。
————————————————————————————————————————————————————————————————
Intent里面传入ACTION_DIAL调用拨号界面
————————————————————————————
Intent传递数据
给下一活动传递数据,直接添加一条intent。putExtra(“键名”,数据);
然后在那个活动中 getIntent(),然后getStringExtra(“传入键名”);
给上个活动传递 必须要用startActivityForResult()传递intent,传入一个intent和一个请求码
在下一个活动中,putExtra,之后,setResult(RESULT_OK,intent)
然后在目标活动中重写onActivityResult()方法。
onActivityResult(int requestCode,int resultCode,Intent data)『
switch(requestCode)
case 1;
case
注意用BackPress无法返回。除非putExtra,setResult放在Backpress里面。
_________________________________________________________________________________________
一个任务就是一组存放在栈里的活动
生存期在56-57页
—————————————————————————————————————————————————————————————————————————————对话框活动
要在注册的时候在activity中添加主题android:theme="@android:style/Theme.Dialog"
___________________________________________________________________________________________________________
为了防止活动因为内存不足而被回收导致的数据丢失
可以用onSaveInstanceState()回调方法来解决
@Override
protected void onSaveInstanceState(Bundle outState){
super.onSaveInstanceState(outState);
String tempData=...
outState.putString("键名“,temDate);
然后在onCrete里面取出
if(savedInstanceState!=null){
String tempDate=savedInstanceState.getString("data_key");
}知道为什么oncrete里面老是传入Bundle saveInstanceState了吧
活动的启动模式
standard 有可能创建多个相同活动的实例
singleTop 如果栈顶活动已经存在要开始的活动,就不会创建新的实例。但是如果要创建的不是栈顶实例,则可能有多个比如12121这种就有多个
singleTask,不会创建多个实例,每次都会检查实例是否已经存在
singleInstance 会新建一个返回栈
用getTaskId的方法可以看到任务的Id从而确定多个活动是否在同一个栈
————————————————————————————————————————————————————
如何知道当前是哪一个活动
新建一个baseActivity,让所有活动继承他,然后在BaseActivity的onCrete里面log getClass().getSimpleName();
_______________________________________________________________________
如何随时随地退出程序,避免多次按返回键
用一个活动管理器类(ActivityCollector)。
然后在baseActivity oncrete里面添加 ActivityCollector.addActivity(this);
ondestory里面添加..............................remove(this);
让一个按钮 调用finishall方法就可以了
————————————————————————————————————————————
启动活动的最佳写法
比如SecondActivity不是你开发的
在里面写一个actionStart方法
public static void actionStart(Context context,String data1,String data2){
Intent intent=new Intent(context,SecondActivity.class);
intent.putExtra("param1"data1);
context.startActivity(intent);
}
}
之后只要调用SecondActivity.actionStart,传入上下文,数据等就可以启动SecondActivity了
- 《第一行代码》复习遗漏重难点整理1-2章
- 《第一行代码》复习一
- 《第一行代码》复习二
- 《第一行代码》复习四 自定义控件
- 《第一行代码》复习五 Fragment
- 《第一行代码》复习六BroadcastReceiver
- <android>第一行代码 第二章源码整理
- <android>第一行代码第三章源码整理
- 第一行代码 读书笔记 第2章
- 第一行代码 读书笔记 第1章
- 第 1 章,第一行代码
- 《第一行代码》第 1 章
- 《第一行代码》(2)整理读后笔记
- 《第一行代码2》
- 《第一行代码1》
- 《第一行代码Android》--细节整理
- 第一行代码读书笔记___1-2章
- 第一行代码学习2(1)
- Bootstrap学习总结笔记(21)-- 基本插件之按钮
- ECMA5Script的函数function
- JAVA SE成长随笔之方法
- FDATOOL设计数字滤波器
- OGNL的简单使用
- 《第一行代码》复习遗漏重难点整理1-2章
- 第三十六讲项目5——有多少符号
- Redis-Java中使用
- JPA事务
- 控制执行流程
- 救济金发放的解决
- [Leetcode] 2. Add Two Numbers 解题报告
- Matlab编程序设计数字滤波器
- js 笔记