安卓系统是开源的
命名规则: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
使用步骤
- 创建新的Activity,布局名称LoginActivity,创建布局与创建普通布局文件相同
- 在清单文件中添加
<activity android:name=".LoginActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
- 主窗体调用子窗体,我们假设从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:表示当前文件可以被其他应用写入
网友评论