安卓知识点大全

安卓的四大组件;Activity, Service,(Broadcast Receiver),(Content Provider)
1. Intent分为显式和隐式,活动有四种状态: 运行状态,暂停状态,停止状态,销毁状态;Activity有7种回调方法:onCreate,onStart,onResume,onPause,onStop,onDestroy,onRestart
2. 活动的启动模四种standard:系统默认的启动模式,在不进行显示指定的情况下所有活动启用该模式,每当启用一个模式,它都会入伐并处于伐顶位置,singleTop:如果发现返回伐的伐顶已经是该活动,直接使用它,不会再创造新的活动实例,singleTask:让某个活动在整个应用程序中的上下文只存在一个实例,每次启动该活动时系统会在返回伐中检查是否存在该活动的实例,如果已经存在则直接使用该实例,并把在这活动之上的所有活动统统出伐。,singleInstance:启用一个新的返回伐来管理这个活动不管哪个应用访问这个活动,都共同的同一个返回伐,解决了共享活动实例的问题。(在android:launchMode=” singleInstance”来设置)
3. 3.四种基本布局:LinearLayout,RelativeLyout,FrameLayout,TableLayout
4. 布局美化:hint的作用是提示信息在文本框,一旦用户输入信息就会消失;maxLines的作用是规定行数,可以在EditText里设置
5. 有的控件有:TwxtView,Button,EditText,ImageView,ProgressBar: 进度条,AlertDialog:当前页面弹出对话框,ProgressDialog:弹出有进度框的对话框
6. Android:gravity:指定文字在控件中的对齐方式;Android:layout_gravity:指定控件在布局中的对齐方式;当LinearLayout的排列方向为horizontal(水平)时,控件的宽度不能为match_parent;当排列方向为vertical(垂直)时,控件的高度不能指定为manch_parent;LinearLayout中有一个重要的属性android:layout_weight:按比例指定控件的大小,这在手机的适配性比较重要
7. 表格布局:不能指定宽度,TableRow:行,android:layout_span:合并单元格,android:strechColumns:表示不能完全沾满屏幕宽度时,就将列拉伸,指定成0为拉伸第一列,指定1则为拉伸第二列
8. Android:layout_margin:上下左右方向上偏离的距离,要引用自定义控件:,新建TitleLayout继承自LinearLayout,代码如下:LayoutInflater.from(context).inflate(R.layout.title,this);代码解释:通过layoutInflater的from()方法可以构建出一个LayoutInflater对象,然后调用inflate()方法动态加载一个布局文件,inflate()接收两个参数,第一个参数是要加载的布局文件的id,第二个参数是给加载好的布局再添加一个父布局
9. 安卓程序频幕适配,当需要指定一个固定值时,控件或是布局用dp也就是dip来指定,指定文字时用sp,要设置listview的分割线设置为透明色的代码是android:divider=”#0000”
10. Fragment为碎片,android:name=”包名.类名”
11. 碎片的生命周期:运行状态,暂停状态,停止状态,销毁状态;碎片的回调方法除了活动的回调方法,还有一下附加的回调方法:(1)onAttach():碎片和活动建立关联时调用(2)onCreateView():碎片创建视图(加载布局)时调用(3)onActivityCreated():确保碎片相关联的活动一定已经创建完毕时调用(4)onDestroyView当与碎片关联的视图被移除时调用(5)onDetach():当碎片和活动解除关联时调用
12. TextView的属性,android:padding表示给控件的周围加上补白, android:singleLine设置为true表示这个TextView只能单行显示,android:ellipsize设定当文本内容超出控件宽度时,文本的缩略方式,指定为end表示在尾部进行缩略
13. ListView:android:entries指定列表数组,android:divider:改变列表的分隔条
14. 广播可以分为标准广播:完全异步执行的广播,广播不可以截断;有序广播:同步执行的广播,可以被截断;注册广播的方式有两种:动态注册:在代码中注册,可以自由的控制注册和注销,比较灵活,但是必须要在程序启动后才能收到广播;静态注册:在AndroidManifest.xml中注册,在程序未启动的情况下就可以收到广播了,在广播的onReceive()方法中不要添加过多的逻辑或者进行任何的耗时操作,在广播中是不允许开启线程的,当onReceive()方法运行了较长时间而没有结束,程序就会报错,广播扮演的角色是打开其它程序的组件,创建一条状态栏通知,启动一个服务等
15. 提交本地代码:1.建立个本地仓库:cd c:,然后cd …(也就是需要建立仓库的路劲写下了就行了)2.创建仓库:git init这样就完成创建代码的操作,可以通过is –al命令查看一下3.提交代码:git add 文件名(或是src或是.,意思是所有文件)
16. 数据储蓄有三种方式:1.文件储存2.SharedPreference存储3.数据库存储;文件的存储:Context类提供一个openFileOutput()需要两个参数,一个是文件名,2是文件的操作模式:MODE_PRIVATE(会被覆盖),MODE_APPEND(不会被覆盖)
17. 文件存储逻辑:通过openFileOutput()方法能得到一个FileOutputStream对象,再借助它构建一个OutputStreamWriter对象,接着使用OutputStreamWriter构建BufferedWriter对象,这样就可以将文本内容写入到文件中了:FileOutputStream out =openFileOutput(“data”,Context.MODE_PRIVATE);BufferedWriter writer=new BufferedWriter(new OutputStreamWriter(out));writer.write(data);
18. 从文件中读取数据逻辑代码:FileInputStream in =openFileInput(“data”)//通过openFileInput获得一个FileInputStream 对象。BufferedReader reader=new BufferedReader(new InputStreamReader(in))//使用InputStreamReader构建一个BufferedReader 对象,这可以通过BufferedReader一行行的读取,取回来存放在StringBuilder对象中;知识点:对字符串进行非空判断的时候使用了TextUtils.isEmpty()方法,可以进行两种空值的判断,即当传入的字符串等于NULL或是等于空字符串的时候,都会返回true
19. 将数据存储到SharedPreferences中有三种方法:1. Context中的getSharedPrefences()方法:要两个参数:指定SharedPreferences文件的名称,另一个参数用于指定操作模式;2.Activity类中的getPreferences中的方法,只接收一个模式参数3.preferenceManager类中的getDefaultSharedPreferences()方法,这是一个静态方法,它接收一个Context参数;得到SharedPreferences对象后,分三部:1.调用SharedPreferences对象的edit()方法获取SharedPreferences.Editor对象 2.向这个对象添加数据,用putString方法,假如添加的是String对象的话 3.调用commit()方法提交
20. 创建数据库:SQLiteOpenHelper中有两个构造方法可以重写,构造方法需要传入4个参数,第一个:Context,第二个:数据库名,第三个:允许我们查询数据库的时候返回自定义的Cursor,一般null;第四个:当前数据库的版本号,用于对数据库进行升级;数据库文件存放在/data/data/<包名>/databases/目录下,创建数据库的方法:1.把创建的SQL语句定义成String 2.在onCreate里放入参数onCreate(SQLiteDatabase db)里 3.调用db.execSQL(放入SQL语句定义成String)就能执行创建
升级数据库:1.在MyDatabaseHelper里写onUpgrade()方法,db.execSQL(“drop table if exists 表名”)删除表,onCreate(db) 2. dbHelper=new MyDatabaseHelper(this,”BookStore.db”,null,2)传入版本2
数据库的SQL语言:insert:添加,查询:select,更新:update,删除:delete,下面看它们各种需要的参数:insert()接收三个参数,第一个是表名,第二个参数是用于在未指定添加数据的情况下给某些为空的列自动赋值NULL,一般传入NULL,第三个参数是ContentValues对象,它提供一系列的put()方法重载,用于向ContentValues中添加数据;如何新增数据:1.获取到SQLiteDatabase对象,用ContentValues进行组装: SQLiteDatabase db=dbHelper.getWritableDatabase();
ContentValues values=new ContentValues();
values.put(“name”, “The Da Vinci Code”);
db.insert(“Book”, null, values);
21. 数据库查询:query()需要七个参数:1.表名2.指定查询第几列3.指定where的约束条件4.为where中的占位符提供具体的值(第3,4个参数其实是约束查询某一行或几行的数据,不指定查询所有行)5.指定需要group by的列6.对group by后的结果进行进一步的过滤 7.指定查询结果的排序方式
22. 查询数据库调用SQLiteDatabase的rawQuery 方法,其它操作调用的是execSQL()方法
23. 解析异步消息处理机制:异步消息处理机制由四部分组成:Message,Handler,MessageQueue,Looper……它们的作用分别是:(1)Message是在线程之间传递的消息,它可以在内部携带少量的信息,用于在不同的线程中交换数据(2)Handler是处理者的意思。它主要用于发送和处理消息的,发送用sendMessage()方法,接受用handleMessage()方法(3)MessageQue:消息队列的意思,存放所有通过Handler发送的消息,这些消息等待被处理,每个线程中只有一个MessageQueue对象(4)Looper是每个MessgeQueue的管家,每当发现MessgeQueue存在一条消息,就会将它取出,传递到HandleMessage()方法中,每个线程只有一个Looper对象
24. 使用 AsyncTask: AsyncTask是一个抽象类,必须创建一个子类去继承它,继承时,可以为AsyncTask类指定三个泛型参数:(1)Params:执行AsyncTask时传入的参数,用于后台任务中使用(2)Progress:后台任务执行时,如果需要在界面上显示当前的进度,可以使用指定的泛型作为进度单位(3)Result,当任务执行完毕后,如果需要对结果返回,则使用这里的泛型作为返回值类型,因此一个简单的自定义的AsyncTask可以写成如下公式:class DownloadTask extents AsyncTask

你可能感兴趣的:(安卓)