2018-10-31

安卓系统是开源的

命名规则:1.5版本后用甜点作为代号

五大布局,

FrameLayout(框架布局)
LinearLayout(线性布局)
Gridlayout(绝对布局)
RelativeLayout(相对布局)
TableLayout(表格布局)

activity的生命周期

  • onCreate(); 当Activity第一次被创建的时候,就会调用OnCreate()方法,在 OnCreate()方法中,通常要设置Activity所使用的布局文件,对按 钮绑定监听器等等静态的设置操作。
  • onResume(); 当这个Activity能够获得用户焦点(即用户在屏幕上进行操作的时 候
  • onPause(); 当第一个Activity通过Intent启动第二个Activity的时候,则会先调用 前一个Activity的onPause()方法
  • onStop(); 当第二个Activity把第一个Activity完全遮挡住的时候,即对用户来说 第一个Activity处于完全不可见的时候,那么第一个Activity则调用 onStop()方法将当前Activity关闭。
  • onDestory(); 此方法将Activity销毁,销毁之后,若想再调用此Activity,则需要从 新调用onCreate方法

页面跳转同时页面值的双向传递

Bundle bundle = new Bundle(); 
bundle.putSerializable("user", user); 
intent.putExtras(bundle);
Intent intent = this.getIntent(); 
user=(User)intent.getSerializableExtra("user");

Intent显示隐式区别

  • 显式intent:通过名字指定目标组件。显式intent通 常用于应用程序内部消息,如一个活动启动从属的服 务或启动一个姐妹活动。
  • 隐式intent:并不指定目标的名字(组件名字字段是 空的)。隐式intent经常用于激活其它应用程序中的 组件。

调用系统Action

Fragment的优点

  • 在Fragment可以使你能够将activity分离成多个可重用 的组件,每个都有它自己的生命周期和UI。
  • Fragment可以轻松得创建动态灵活的UI设计,可以适 应于不同的屏幕尺寸,从手机到平板电脑。
  • Fragment是一个独立的模块,并与activity绑定在一 起,可以静态或者在运行中动态地添加、移除、交换等。
  • Fragment提供一个新的方式让你在不同的安卓设备上 统一你的UI。
  • Fragment 解决Activity间的切换不流畅,轻量切换。
  • Fragment能替代TabActivity做导航,性能更好。
  • Fragment 在4.2版本中新增嵌套fragment使用方法,能够生成 更好的界面效果。
  • Fragment做局部内容更新更加方便,可以在Activity中使用多个 Fragment,并在需要的时候加载Fragment,提高性能。
  • 可以从startActivityForResult中接收到返回结果,但是View不能。

android使用MVC的优点,以及为什么

可以将UI界面显示部分、 业务逻辑和数据处理分开。

  • 程序员可以将UI设计交给美工处理,将重点放在核心 代码的编写上,从而提高效率;
  • 在开发过程中,便于修改、新增、移除新的模块;
  • Android系统专门提供了“res/values/”目录下的诸 如strings.xml、colors.xml类型的文件,便于调用和 修改。

ListView,RecycleView列表展示以及优点,adapter(需要实现的三个方法),布局管理器,注意依赖包的添加

  • 在android开发中ListView是比较常 用的组件,它以垂直列表的形式展示 具体内容,并且能够根据数据的长度 自适应显示。用于呈现多条布局相同 的显示内容。
  • 适配器分为以下三种,均继承自BaseAdapter:
    • ArrayAdapter:支持泛型操作,最为简单,只能展示一行字。
    • SimpleAdapter:有最好的扩充性,可以自定义出各种效效果。
    • SimpleCursorAdapter:可以认为是SimpleAdapter对数据库的 简单结合,可以方面的把数据库的内容以列表的形式展示出来。

CardView各种设置

TableLayout调用addTab的方法加入新页面

DrawerLayout+Toolbar的使用

Android的四大组件,广播接收器(定义方法,两种注册方法)

  • Activity

使用步骤

  1. 创建新的Activity,布局名称LoginActivity,创建布局与创建普通布局文件相同
  2. 在清单文件中添加
<activity android:name=".LoginActivity">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>
  1. 主窗体调用子窗体,我们假设从MainActivity跳转至LoginActivity
Intent intent = new Intent();
intent.setClass(MainActivity.this,LoginActivity.class);
startActivity(intent);
  • Service

Service有两种方式,启动的和绑定的
启动的生命周期:创建服务,开始服务,销毁服务。
绑定的生命周期:创建服务,绑定服务,解除绑定,销毁服务。

  • Broadcast Receiver

广播接收器的实现:继承BroadcastReceiver类,重写onReceive方法

public class MyReceiver extends BroadcastReceiver{
    @Override
    public void onReceive(Context context, Intent intent) {
        Toast.makeText(context,"这是一个接收 器:"+intent.getStringExtra("receive"),Toast.LENGTH_LONG).show();
    }
}

广播实现的两种方式
静态注册(在xml中静态指定):在清单文件中注册BroadcastReceiver

<activity android:name=".MainActivity" >
     <intent-filter>
          <action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
   </intent-filter>
</activity>

动态注册(在程序中动态注册):在java代码中注册BroadcastReceiver

receiveBroadcast = new ReceiveBroadCast();
IntentFilter filter = new IntentFilter();
Filter.addAction(Tag);
registerReceiver(receiveBroadcast,filter)

区别:作用范围不同,动态注册只在程序过程中有效,静态注册是不管程序是否启动都有用

  • Content Provider

提供了应用程序之间共享数据的方法,为存储和 读取数据提供了统一的接口。

  • URI:content://com.example.stuprovider/StuInfo/2/name
    表示需要操作StuInfo表中ID为2的记录的name字段
  • ContentResolver方法介绍:
    • query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder): 通过uri进行查询,返回一个Cursor
    • insert(Uri url, ContentValues values): 向uri对应的ContentProvider中插入values对应的数 据,返回最新添加记录的uri。
    • update(Uri uri, ContentValues values, String where, String[] selectionArgs): 更新Uri指定位置的数据,返回更新的行数。
    • delete(Uri url, String where, String[] selectionArgs): 删除指定Uri并且符合一定条件的数据,返回删除的行数。

Service,启动状态or绑定状态

  • 通过startService()启动的服务处于“启动的”状态,一 旦启动,service就在后台运行,即使启动它的应用组件 已经被销毁了。当任务完成时,为了节省系统资源,一 定要停止service,可以通过stopSelf()来停止,也可以 在其他组件中通过stopService()来停止。
  • “绑定”状态的service,通过调用bindService()来启动, 一个绑定的service提供一个允许组件与service交互的接 口,可以发送请求、获取返回结果。绑定的service只有 当应用组件绑定后才能运行,多个组件可以绑定一个 service,当调用unbind()方法时,这个service就会被销 毁了。

发送短信例子(26以下清单文件指明权限,26以上是动态)

本地存储的四种方式:特点及应用场景

  • SharedPreferences:SharedPreferences提供一套 完整的存储基本类型数据的方法,可以将数据保存到 私有数据区,只能被写入这些数据的应用程序读取。
  • Internal Storage:手机内部存储,以文件方式保存 数据,只能本程序使用,外部的应用程序无法访问该 文件;需要注意的是,文件也是临时性的,当卸载本 程序时,该文件也会被删除。
  • External Storage:手机的外部存储(如SD卡),也是以文 件的形式存储数据,一般存储数据量较大的公共数据。需 注意的是,保存在外部存储设备的数据是公开且不安全的, 用户可以自由进行读写操作,甚至可以删除。
  • SQLite Database:SQLite是标准的关系型数据库,具有 小巧、独立性高、安全性高、跨平台和多语言接口等优点, 用户可以使用标准的SQL语句进行数据的增删改查。它内 置于Android系统中,一般用于存储复杂类型的数据。

SharedPreferences的四种操作模式,保存数据时不要忘记commit()

  • Context.MODE_PRIVATE:为默认操作模式,代表该文件是私有数 据,只能被应用本身访问,在该模式下 写入的内容会覆盖原文件的内容
  • Context.MODE_APPEND:该模式会检查文件是否存在,存在就往 文件追加内容,否则就创建新文件
  • Context.MODE_WORLD_READABLE:表示当前文件可以被其他应用读取
  • Context.MODE_WORLD_WRITEABLE:表示当前文件可以被其他应用写入
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,088评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,715评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,361评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,099评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 60,987评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,063评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,486评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,175评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,440评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,518评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,305评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,190评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,550评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,880评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,152评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,451评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,637评论 2 335

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,042评论 25 707
  • 用两张图告诉你,为什么你的 App 会卡顿? - Android - 掘金 Cover 有什么料? 从这篇文章中你...
    hw1212阅读 12,650评论 2 59
  • 面试必背 会舍弃、总结概括——根据我这些年面试和看面试题搜集过来的知识点汇总而来 建议根据我的写的面试应对思路中的...
    luoyangzk阅读 6,703评论 6 173
  • 今天的练习图,橘右京,毁了
    ruoshuiYuH阅读 201评论 0 1
  • 你说深夜的天空应该是清爽的淡蓝色,白云万里,微风拂面,蟋蟀蛐蛐在露天弹唱; 我不相信,斥责你是一个瞎子,看不到深夜...
    勾魂度阅读 444评论 5 5