2020-HNUST-安卓考点总结

本文为我这个学渣的自我救赎笔记,只能包含一些重点了
四大组件:Activity、BroadcastReceiver(广播接收者)、Service(服务)、Content Provider(内容提供者)

预测考点

目录(链接)
1,安卓四层结构体系,名称和内容
2,安卓UI各类布局属性,控件资源和属性
3,activity编程(可能有大题),数据的启动、跳转、回传
4,数据存储的参数、名称、属性
5,SQLite的crud(会写)
6,BroadcastReceiver和ContentProvider使用方法
7,Service的基本概念,重点关注启动方式和生命周期


一,安卓四层结构体系,名称和内容

  • 应用程序:设备上安装的软件应用都属于这一层。
  • 应用程序框架:应用程序框架层主要提供了构建应用程序时用到的各种应用API
  • 核心类库:包含系统库和运行环境。系统库包含了底层C代码;运行环境包含了Java的核心库和Dalvik虚拟机。
  • Linux内核:提供Android的底层驱动。

二,安卓UI各类布局属性,控件资源和属性

六种布局:

  • RelativeLayout:相对于其他控件或者容器决定控件的位置;
  • LinearLayout:使控件以竖直或者水平方向排列;
  • TableLayout:使控件以表格形式排列;
  • GirdLayout:能使控件交错显示,能够避免因布局嵌套对设备性能的影响,更能利于自由布局的开发;
  • FrameLayout:使控件按照创建顺序在屏幕的左上角重叠显示;
  • AbsoluteLayout:通过绝对的坐标控制控件摆放的位置;

常用控件:

  • TextView:文本框
    • 文本信息,通过TextView控件显示的。TextView控件属性包含:字体大小、颜色、样式等。
  • EditText:编辑框
    • 继承自TextView,与其最大的区别是用户可以在设备上对EditText控件进行操作,同时可以为EditText控件设置监听器,用来测试用户输入的内容是否合法。
  • Button:按钮
    • 点击方式有3种,在布局中指定onClick属性、使用匿名内部类、在当前Activity中实现OnClickListenner接口。
  • RedioButton:单选按钮
    • 需要与RedioGroup配合使用,提供两个或多个互斥选项集。

三、activity编程(可能有大题),数据的启动、跳转、回传

四种启动模式:

  • Standard:每当启动一个新的Activity,它就会进入任务栈,并且处于栈顶的位置,对于使用Standard模式的Activity,系统不会判断该Activity在栈中是否操作,每次启动都会创建一个新的实例。
  • SingleTop:与standard类似,不同的是,当启动的Activity已经位于栈顶,则直接使用它不创建新的实例。如果启动的Activity没有位于栈顶时,则创建一个新的实例位于栈顶。
  • SingleTask:创建的Activity只存在一个实例。已经存在则直接使用该实例,并将当前Activity之上的所有Activity出栈,如果没有发现则创建一个新的实例。
  • SingleInstance:启动一个新的任务栈管理Activity。

Activity三种状态:

  • 启动状态:启动后,就会进入到运行状态。
  • 运行状态:该状态下可以对界面进行操作。
  • 暂停状态:界面可见但不具有焦点无法点击。
  • 停止状态:界面不可见,一般在停止状态时保存数据防止程序被系统强制杀死。
  • 销毁状态:当处于销毁状态时,将被清理出内存。

Activity之间的跳转

Activity之间的跳转需要Intent(意图)组件,通过Intent可以开启新的Activity实现界面跳转功能。

1,显式意图

Intent intent =new Intent(this,Activity02.class);
intent.putExtra("extra_data","hello Activity02");
startActivity(intent);

数据接收

Intent intent =getIntent();
String data=intent.getStringExtra("extra_data");

2,隐时意图
相对显示来说,更为抽象,它并没有明确指定要开启哪个目标组件,而是通过action与category来指定

数据回传

在Activity中,使用Intent既可以将数据传给下一个Activity,还可以将数据回传给上一个Activity。Activity中提供了一个startActivityForResult(Intent intent,int requestCode)方法,该方法也用于启动Activity,并且这个方法可以在当前Activity销毁时,返回一个结果给上一个Activity。

Activity01:

Intent intent=new Intent(this,Activity02.class);
startActivityForResult(intent,1);

Activity02:

Intent intent=new Intent();
intent.putExtura("extra_data,"hello activity01");
setResult(1,intent);

带回来的结果,request是你请求码,request是返回码(这两个码确定是哪个信息),intent是返回信息:

protected void onActivityResult(int requestCode,int resultCode,Intent intent){
	super.onActivityResult(requestCode,resultCode,data);
	if(requestCode==0){
		if(resultCode==0){
			String string =data.getStringExtra("extra_data");
		}
	}
}

四,数据存储的参数、名称、属性

  • XML解析方式

    • DOM解析
      • 以DOM树存储到内存中,支持删除、修改
    • SAX解析
      • 逐行扫描XML文件:速度快,缺点是:只能读
    • PULL解析
      • 开源的Java项目,除了安卓,JAVAEE也可以使用(就是我们熟悉的JavaEE项目中的那种XML解析方式)
  • JSON解析(就是json格式的那一套)

    • 对象结构
    • 数组结构
    • 安卓通过org.json包下的JSONObject和JSONArry两类对数据解析:
    • JSONObject通过的是optString方法通过key获取values。
    • JSONArray通过的是.optInt(i)遍历获取数组对象。

5种存储方式:

  • 文件存储:文本、音频、图片等

    • 分内部存储和外部存储 :
      • 内部存储将应用程序中的数据以文本的方式存储到设备内部。
        • openFileInput():打开应用程序的输入流,读取指定文件中的数据
        • openFileOutput():打开应用程序的输出流,将数据存储到指定文件
        • mode:文件的操作模式
          • MODE_PRIVIDER:只能被当前程序读写
          • MODE_APPEND:追加
          • MODE_WORLD_READABLE:可被其他程序读
          • MODE_WORLD_WRITEABLE:可被其他程序写
      • 外部存储是指将文件存储到一些外部设备(如:SD卡)
        • FileInputStream:读取外部信息
        • FileOutputStream:信息写到外部存储设备
  • SharedPreferences:采用k 、v的形式存储一些简单的配置信息,采用XML格式

    • values只能是Float、Int、Long、Boolean、StringSet类型
    • 存储数据:
      • 先调动getSharedPreferences(String name,int mode)方法获取实例对象:文件名、文件操作模式。需要调用其edit()方法获取可编辑对象,最后通过putString和putInt方法存储数据。remove删除一条数据,clear删除所有数据
    • 获取数据:
      • SharedPreferences sp = getSharedPreferences(“data”,“MODE_PRIVATE”);
      • String data=sp.getString(“name”,"");第二个对象是缺省值(不存在就返回第二个空字符串)
  • SQLite数据库

    • 遵循ACID的关系型数据库,ACID是数据库事务正确执行的4个基本要素。原子性、一致性、隔离性、持久性。
    • 需要创建一个类继承自SQLiteOPenHelper并且重写onCreate方法和onUpdate方法
  • ContentProvider

    • 应用程序间的数据交换,可以将自己的数据分享给其他应用程序使用。
  • 网络存储

    • 将数据存储在服务器上,通过网络提供的存储空间来存储、获取数据信息。

五,SQLite的crud(会写)

增加一条数据

public void insert(String name,String price){
	SQLiteDatabase db=helper.getWritableDatabase();
	ContentValues values=new ContentValues();
		values.put("name",name);
		values.put("prices",prices);
	long id=db.insert("information",null,values)//第二个意思是:如果为空行,则列名的值设置为null
	db.close();
}

修改一条数据

public void insert(String name,String price){
	SQLiteDatabase db=helper.getWritableDatabase();
	ContentValues values=new ContentValues();
		values.put("prices",prices);
	long number=db.update("information",values,"name=?",new String[]{name});
	db.close();
	return number;
}

删除一条数据

public int delete(long id){
	SQLiteDatabase db=helper.getWritableDatabase();
	int number=db.delete("information","_id=?",new String[]{id+""});
	db.close();
	return number;
}

查询一条数据

public boolean find(long id){
	SQLiteDatabase db=helper.getWritableDatabase();
	Cursor cursor=db.query("information",null,"_id=?",new String[]{id+""},null,null,null);
	boolean result=cursor.moveToNext();
	cursor.close();
	db.close();
	return result;
}

六,BroadcastReceiver和ContentProvider使用方法

接收广播:继承BroadcastReceiver类,重写onReceive()方法
内容提供者:访问之前需通过Context中的getContentRedolver()方法获取

  • 其他与SQLiteDatabase相似

七,Service的基本概念,重点关注启动方式和生命周期

创建方法:new ->service->service,在弹出来的窗口中输入名称即可

  • 启动方式

    • startService()方法
      • 创建程序
      • 创建服务:重写onCreate()、onStartCommond()、 onDestory()方法
      • 编写界面交互代码
      • 运行程序
    • bindService()方法
      • 创建程序
      • 创建服务:重写onCreate()、onBind()、onUnbind()、以及自定义的methodInServices()方法。
      • 编写界面交互代码
      • 运行程序
  • startService()方法生命周期

    • onCreate()
    • onStartCommond()
    • onDestory()
  • bindService()方法生命周期

    • onCreate()
    • onBind()
    • onUnbind()
    • onDestory()

你可能感兴趣的:(android)