- setContentView(R.layout.xxx):为当前活动加载一个布局
- requestWindowFeature(Window.FEATURE_NO_TITLE):隐藏标题栏,需要在setContentView之前运行,否则会报错
- findViewById():通过传入布局元素的id来获取该元素,该方法返回的是一个View对象,需要对其进行向下转型转换成需要的元素对象类型
- setOnClickListener():为按钮添加点击事件,点击按钮时会触发 onClick() 方法
- Toast.makeText().show():显示一条Toast消息,makeText中需要的三个参数为 Context,消息内容,消息显示时长
- onCreateOptionsMenu():在活动中创建一个菜单,通过 getMenuInflater().inflate(R.menu.main, menu) 将菜单布局文件绑定到Menu对象上
- onOptionsItemSelected():执行Menu中item的点击事件,通过 item.getItemId() 来判断点击的按钮
- finish():销毁当前活动
- android:id="@+id/xx":设置当前元素id,可通过R.id.xx调用
- android:layout_width="match_parent":设置当前元素宽度与父元素一样宽
- android:layout_height="wrap_content":设置当前元素高度为刚好包含元素内容的高度
- android:text="xxx":设置元素中显示的文字内容
- 在 <application></application> 标签中注册当前活动
<activity
android:name=".MainActivity"
android:label="This is MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
- android:name:具体注册的活动名称
- android:label:程序的快捷方式名称
- <action android:name="android.intent.action.MAIN" />:声明该活动为主活动,打开app的第一页面
- <category android:name="android.intent.category.LAUNCHER" />:该程序会显示在程序列表中,即创建图标
- <data android:scheme="http"/>:定义该活动能够相拥的数据协议,http是网络协议,geo是地理位置,tel是电话
- Intent intent = new Intent(MainActivity.this, SecondActivity.class):显式Intent的创建,构造函数的两个参数为 Context,目标活动
- startActivity(intent):通过该方法执行intent,打开第二个活动,按back建即可返回
- startActivityForResult(intent, 1):启动活动,并在活动销毁时返回一个结果给上一个活动
- Intent intent = new Intent("com.chenggoi.androidstudy.ACTION_START"):隐式Intent的创建,通过**标签**来确定开启的活动,只有在活动包含的action标签吻合时,才会启动
- intent.addCategory():添加一个 category ,只有在category也对应上时才能打开该活动。一个活动只能有 一个 action,但是可以有 多个 category
- Intent.ACTION_VIEW:系统内置的action,用于启动浏览器
- Intent.ACTION_DIAL:系统内置的action,用于启动拨号界面
- **intent.setData(Uri.parse("http://chenggoi.com"))**:将网址的uri信息绑定到intent上传递给要打开的应用
- intent.putExtra("extera_data",data):通过intent传递信息,两个参数分别为 信息标签,信息内容
- getIntent():获取用于启动Activity的Intent
- intent.getStringExtra():获取intent中包含的指定类型指定标签的数据
- setResult(RESULT_OK,intent):将intent返回给上一个活动,只有在该活动被销毁时才会调用,并触发上一个活动的onActivityResult()方法
- onActivityResult():通过重写该方法处理活动销毁时返回的信息,该方法的三个参数为 启动第二活动时传入的请求码,返回数据时传入的处理结果,携带着返回数据的intent ,可以根据三个参数,判断数据来源,处理结果是否成功,并将intent中的数据取出
- android:theme:用于给当前活动指定主题
- android:launchMode:用于给当前活动设置启动模式,启动模式包括 satndard、singleTop、singleTask、singleInstance
- standard:活动启动的默认模式,系统不会判断这个活动是否在返回栈中存在,每次启动都会创建该活动的一个新的实例
- singleTop:当活动已经在栈顶时,再次启动该活动不会创建一个新的实例,而是直接使用栈顶的该活动。当该活动不在栈顶时,再次启动会创建一个新的实例
- singleTask:系统会检测栈中是否含有该活动,如果有则将该活动之后的所有活动统统出栈,如果没有则会创建一个新的活动
- singleInstance:该活动会单独启用一个新的返回栈来管理这个活动,不论哪个应用访问该活动,该活动都会共用同一个返回栈,解决了共享活动实例的问题
- <TextView>:显示一段文本信息
- android:gravity:指定文字的对齐方式,可选值有 top、bottom、left、right、center 等,可以用|来同时指定多个值
- android:textColor:设置文字的颜色
- android:textSize:设置文字的大小
- <Button>:用于与用户进行交互的按钮
- <EditText>:允许用户进行输入的输入框
- android:hint:指定输入框内的提示性文本,输入文字后会消失
- android:maxLines:指定输入的最大行数,输入内容超过行数限制时会向上滚动
- <ImageView>:在界面上插入一个图片
- android:src:设置元素中显示的内容
- <ProgressBar>:进度条元素
- android:max:设置进度条的最大值
- android:visibility:设置元素的可见性,可选值有visible(可见)、invisible(透明)、gone(不可见)
- 生命周期:onCreate、onStart、onResume、onPause、onStop、onDestory、onRestart
- Bundle类型:提供了一系列方法用于保存数据,如 putString() 方法保存字符串。每个保存方法需传入两个参数,一个是一个参数是键,用于从Bundle中取值,另一个是要保存的内容
- onSaveInstanceState():用于在活动被系统回收前保存活动中的数据,将数据存于Bundle类型的变量中,等到活动再次调用onCerate时作为参数传入,并携带有之前保存的全部数据
- getClass().getSimpleName():获取当前实例的类名
- editText.getText():获取EditText输入的内容
- imageView.setImageResource():设置ImageView中显示的图片
- getVisibility():获取元素的可见性
- setVisibility():设置元素的可见性,可选值为 View.VISIBLE、View.INVISIBLE、View.GONE
- AlertDialog.Builder:创建一个AlertDialog实例
- dialog.setTitle():设置dialog标题
- dialog.setMessage():设置dialog的内容
- dialog.setCancelable():是否可以点击dialog以外区域取消
- dialog.setPositiveButton():为确定按钮设置点击事件
- dialog.setNegativeButton():为取消按钮设置点击事件
- dialog.show():显示dialog
- ProgressDialog:创建一个带进度条的dialog
- dialog.dismiss():关闭dialog
- LinearLayout:线性布局,将所包含的控件在线性方向上依次排列
- android:orientation:指定布局的排列方向, vertical 为垂直排列, horizontal 为水平排列,默认值为水平排列
- android:layout_gravity:控件在布局中的对齐方式。当布局为 horizontal 时,只有垂直方向的对齐方式会生效,反之亦然
- android:layout_weight:设定控件所占的屏幕比例。系统会将所有控件的weight值相加,然后根据每个控件的值算出所占比例
- RelativeLayout:线性布局,通过相对定位的方式让控件出现在布局的任何位置
- android:layout_alignParentLeft:与父布局左边对齐
- android:layout_alignParentRight:与父布局右边对齐
- android:layout_alignParentTop:与父布局顶端对齐
- android:layout_alignParentBottom:与父布局底端对齐
- android:layout_centerInParent:与父布局中间对齐
- android:layout_above:在某个控件的上面
- android:layout_toLeftOf:在某个控件的左面
- android:layout_toRightOf:在某个控件的右面
- android:layout_below:在某个控件的下面
- android:layout_alignLeft:一个控件的左边缘与另一个控件的左边缘对齐
- android:layout_alignRight:一个控件的右边缘与另一个控件的右边缘对齐
- android:layout_alignTop:一个控件的上边缘与另一个控件的上边缘对齐
- android:layout_alignBottom:一个控件的下边缘与另一个控件的下边缘对齐
- FrameLayout:没有任何定位方式的布局,所有控件都会摆放在布局的左上角,后添加的控件会覆盖在之前添加的控件上
- TableLayout:使用表格的方式来排列控件
- android:stretchColumns:指定第n-1列拉抻至填满屏幕
- TableRow:表示在表各中添加一行,在TableRow中每加入一个控件,就添加了一列。TableRow中的控件不能指定宽度
- android:inputType:设置EditText的输入格式
- android:layout_span:合并单元格
- android:background:为控件或布局指定一个背景,可以使用颜色或者图片来填充
- android:layout_margin:指定控件在上下左右方向上的偏移距离,也可以使用 marginTop 等来指定特定方向的偏移距离
- TitleLayout继承自LinearLayout,重写其构造函数,当布局被调用时会调用该构造函数,并执行其中对于控件的操作
- LayoutInflater.from(context).inflate(R.layout.title, this):通过LayoutInflater的from()方法,构建一个LayoutInflater对象,然后调用inflate()方法动态加载一个布局文件。两个参数为 要加载的布局文件id,加载好的布局文件的父布局
- 通过指定 完整包名 在其他布局中添加该自定义控件
<com.chenggoi.androidstudy.TitleLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
</com.chenggoi.androidstudy.TitleLayout>
- <ListView>:列表控件
- px:以像素为单位
- pt:以磅为单位,以上两种单位会存在因屏幕分辨率不同而产生的适配问题,因此多用于文字
- dp:密度无关像素,也称作 dip ,在不同密度(屏幕每英寸所包含的像素数,通常以dpi为单位)的屏幕中的显示比例保持一直。根据Android规定,在160dpi的屏幕上,1dp=1px,在320dpi的屏幕上,1dp=2px。
- sp:可伸缩像素,采用与dp相同的设计理念来解决文字大小的适配问题
- ArrayAdapter<>:通过泛型来指定适配器的类型,并在构造函数中将适配的数据传入即可
- listView.setAdapter():将构建好的适配器对象传递进去,建立ListView与数据之间的关联
- listView.setOnItemClickListener():为ListView上的Item注册一个监听器,对item的点击事件进行监听。在**onItemClick()**方法中,可以根据position来判断用户点击的是哪一个item子项。
- getResources().getDisplayMetrics().xdpi:获取x轴方向上的屏幕密度
- getResources().getDisplayMetrics().ydpi:获取y轴方向上的屏幕密度
- getView():重写Adapter的该方法,该方法在每个子项被滚动到的时候会被调用,并返回每个子项的布局。其参数中的convertView用于将之前加载好的布局进行缓存,以便日后进行重用,提高效率
- getItem():通过该方法可以得到当前子项的实例
- LayoutInflater.from():该方法用于为该子项加载传入的布局
- imageView.setImageResource:设置显示的图片
- textView.setText:设置显示的文字
- 提高ListView加载效率:对控件实例进行缓存。创建一个ViewHolder类,将全部控件实例放于其中,然后调用View的setTag()方法,将ViewHolder对象储存在View中。当convertView不为空时调用View的getTag()方法将ViewHolder重新取出,省去每次都要findViewById().
- <fragment>:碎片布局
- android:name:显式指明需要添加的碎片类名
- 限定符:通过对layout进行限定,来根据设备屏幕大小动态加载布局,如layout-large,layout-ldpi, layout-land 分别对应屏幕大小、屏幕分辨率、屏幕横竖屏
- android:padding:给控件的周围加上补白,使文本不会紧靠在边缘上
- android:singleLine:设置为true时表示文字单行显示
- android:ellipsize:设定当文本超出控件宽度时的缩略方式,可选值有 start(省略号在开头)、end(省略号在结尾)、middle(省略号在中间)、marquee(获取焦点时,以跑马灯的形式滚动显示)
- onCreateView():与Activity的onCreate()方法作用相同,为碎片加载布局时调用
- getActivity():获取与当前碎片关联的活动实例,从而调用活动中的方法。而且当fragment中需要context对象时,也可以使用该方法
- onAttach():当碎片和活动建立关联的时候调用
- onActivityCreated():确保与碎片相关联的活动已经创建完毕的时候调用
- onDestoryView():当与碎片关联的视图被移除的时候调用
- onDetach():当碎片和活动解除关联的时候调用
- getFragmentManager():获取FragmentManager实例
- fragmentManager.beginTransaction():开启一个fragment事物,用于对fragment进行添加,移除,替换,以及执行其他动作
- transaction.replace():向容器内添加碎片,两个参数为 传入容器的id,待添加的碎片实例
- transaction.commit():提交执行事务
- transaction.addToBackStack():接收一个名字用于描述返回栈的状态,当按下back键时,不会直接退出fragment页面,而是返回上一个fragment页面
- fragmentManager.findFragmentById():通过布局ID来获取Fragment实例,从而调用Fragment中的方法
- 标准广播(Normal broadcasts):完全异步执行的广播,在广播发出后,所有的广播接收器几乎都会在同一时间接收到这条广播信息。效率比较高但是无法被截断
- 有序广播(Ordered broadcasts):同步执行广播,在广播发出后,同一时刻只会有一个广播接收器能够收到这条消息,当这个广播接收器中的逻辑执行完毕后,广播才会继续传递。此时广播有优先级顺序,优先级高的接收器可以对广播进行截断
- BroadcastReceiver:广播接收者,当接收到广播时,会执行onRecive()方法,在onReceive()方法中,尽量不要执行过多操作,否则长时间没有结束会报错
- intentFilter.addAction(""):添加要监听的广播的action
- registerReceiver():对Receiver进行动态注册,将Receiver实例和IntentFilter实例都传进去
- unregisterReceiver():动态注册的广播必须在onDestory()方法中调用该方法取消注册
- getSystemService():获取系统服务的实例
- connectivityManager.getActiveNetworkInfo():得到NetworkInfo实例
- networkInfo.isAvailable():判断当前是否有网络
- sendBroadcast():发送一条标准广播,参数为 指定了action的Intent实例
- sendOrderedBroadcast():发送一条有序广播,参数为 Intent,与权限相关的字符串
- abortBroadcast():将该条广播截断,后面的广播接收器无法再收到该条广播
- LocalBroadcastManager.getInstance():获取一个LocalBroadcastManager的实例,用于管理本地广播。本地广播只能在同一个程序内被接收,并且无法通过静态注册的方式来接收
- localBroadcastManager.sendBroadcast():发送本地广播
- localBroadcastManager.registerReceiver():注册本地广播
- localBroadcastManager.unregisterReceiver():销毁本地广播
- <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />:添加查询系统网络状态的权限
- <receiver>:静态注册广播接收器,通过 android:name 指定具体注册哪一个广播接收器, <intent-filter> 标签内加入想要接收的广播
- <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />:添加监听系统开机广播的权限
- android:priority:为广播接收器设置优先级,有序广播会按照优先级顺序进行接收
- Android系统中三种简单实现持久化存储的方式:文件存储、SharedPreference存储、数据库存储
- 文件存储:Android中最基本的数据存储方式,不对存储内容进行任何的格式化处理,所有数据原封不动的保存在文件当中
- openFileOutput():用于将数据存储到指定文件中,两个参数为 文件名,存储模式 ,存储模式分别为 "MOVE_PRIVATE"同文件名覆盖、"MOVE_APPEND"同文件名追加 ,默认会保存到 /data/data/<package name>/files 目录下
- openFileInput():用于读取指定文件的数据,参数为 文件名 ,返回一个FileInputStream对象
- editText.setSelection():将EditText的光标移动到指定的位置
- TextUtils.isEmpty():判断字符串是否为空,自带两种空值判断
- SharedPreference存储:使用键值对的方式来存储数据,支持多种不同数据类型存储
- getSharedPreferences():两个参数为 文件的名称,操作模式 ,获取SharedPerferences对象
- SharedPerferences.edit():获取一个SharedPerferences.Editor对象,然后通过 editor.putString() 等方法往其中添加数据
- editor.commit():提交添加的数据,数据存储在 /data/data/<package name>/shared_prefs/ 目录下
- sharedPreferences.getString():根据键值获取SharedPerferences中保存的数据
- SQLiteOpenHelper:用于管理数据库的一个抽象类,继承该类并实现其抽象方法,用于对数据库进行创建和升级操作
- getReadableDatabase():创建或打开一个数据库,并返回一个可对数据库进行读写操作的对象。当数据库不可写入的时候,返回对象以只读方式打开数据库
- getWritableDatabase():创建或打开一个数据库,并返回一个可对数据库进行读写操作的对象。当数据库不可写入的时候,将抛出异常
- 数据库建表语句: integer 整型、 text 文本类型、 real 浮点型、 primary key 主键、 autoincrement id自增长
- db.execSQL():执行除了查询以外的SQL语句
- onUpgrade():当构造函数中传入的版本号比当前数据库的版本号高时,会执行升级方法
- db.insert():向数据表中插入数据,三个参数为 表名,为指定添加数值列的默认赋值,携带添加数据的ContentValues对象
- values.put():向ContentValues中添加数据,两个参数为 相应表的列名,待添加的数据
- db.update():对数据库中的数据进行更新,四个参数分别为 表名,携带更新数据的ContentValues对象,SQL的where语句,指定where语句的条件
- db.delete():删除数据库中的数据,三个参数为 表名,SQL的where语句,指定where语句的条件
- db.query():查询数据库中的数据,七个参数为 表名,查询哪列,查询哪行,查询哪行,指定需要区group by的列,group by之后进行过滤,查询结果排序方式 ,查询结果以Cursor对象返回
- cursor.moveToFirst():移动到第一行
- cursor.moveToNext():移动到下一行
- cursor.getColumnIndex():获取某一列在表中对应位置的索引
- cursor.getString():根据位置索引获取数据
- cursor.close():关闭Cursor
- db.rawQuery():使用SQL语句查询数据库时使用该方法
- db.beginTransaction():开启一个事务,在返回事务成功之前操作中断的话,会还原旧数据
- db.setTransactionSuccessful():表示事务执行成功
- db.endTransaction():结束事务
- 内容Uri:内容Uri通常由 conten://权限/路径 组成,用于确定想要访问哪张表里的数据
- Uri.parse():将内容Uri字符串解析成 Uri对象
- getContentResolver():获取ContentResolver实例,用于对提供ContentProvider的Uri进行 insert(),delete(),update(),query() 操作
- onCreate():初始化内容提供器,通常会在这里完成数据库的创建和升级等操作。只有在ContentResolver尝试访问程序中的数据时才会进行初始化操作
- uriMatcher.addURI():用于匹配内容Uri,三个参数为 权限,路径,一个自定义代码 ,可以传入通配符
- uriMatcher.match():通过Uri对象匹配所对应的自定义代码,从而判断出调用方期盼访问的数据
- getType():用于获取Uri对应的MIME字符串,该字符串主要由三个部分组成:1.必须以 vnd.开头;2如果内容URI以路径结尾,则后接android.cursor.dir/ ,如果以id结尾,则后接 android.cursor.item/ ;3.最后接上 vnd.<authority><path>
- uri.getPathSegments():将uri以“/”符号进行分割,并把分割后的结果存入一个字符串列表中,第0个位置存的路径,第1个位置存的id
- <uses-permission android:name="android.permission.READ_CONTACTS" />:获取电话本的读取权限
- 获取NotificationManager实例:通过调用Context的getSystemService()方法,接收Context.NOTIFICATION_SERVICE获取
- NotificationCompat.Builder:通过实例化该对象,为通知添加图标和文字内容等
- builder.build():返回一个包含具体规范的Notification对象
- notificationManager.notify():将Notification传递给系统,从而使之生效,两个参数为 Notification的专有id,Notification对象
- PendingIntent:延迟执行的Intent,可根据需求选择使用 getActivity(),getBroadcast(),getService()方法。四个参数为Context对象,0,Intent对象,确定PendingIntent的行为
- builder.setContentIntent():设置Notification点击时响应的PendingIntent
- notificationManager.cancel():根据id关闭相应的Notification
- builder.setSound():显示通知时播放一段音频提示,参数为 音频的uri
- Uri.fromFile():将文件的路径转化为Uri
- startForeground(1, builder.build()):调用该方法会让服务变成前台服务,在系统状态栏显示出来,两个参数为 id,notification对象
- SmsMessage.createFromPdu():将pdu字节数组转换为SmsMessage对象
- smsMessages[0].getOriginatingAddress():用于获取到短信发送方的电话号码
- message.getMessageBody():用于获取短信的内容
- receiverFilter.setPriority():设置receiver的优先级
- SmsManager.getDefault():用于获取SmsManager实例
- smsManager.sendTextMessage():发送短信,五个参数为接收人手机号码,service center address,短信内容,发送之后回执,接收之后回执
- PendingIntent.getBroadcast():通过广播获取到一个PendingIntent对象
- getResultCode():获取广播返回的状态
- <uses-permission android:name="android.permission.RECEIVE_SMS" />:声明接收短信的权限
- <uses-permission android:name="android.permission.SEND_SMS" />:声明短信发送的权限
- Environment.getExternalStorageDirectory():获取手机sd卡根目录
- android.media.action.IMAGE_CAPTURE:启动相机的隐式action
- intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri):设置照片的存储路径
- com.android.camera.action.CROP:启动照片裁剪功能action
- BitmapFactory.decodeStream(getContentResolver().openInputStream(imageUri)):将照片解析成bitmap对象
- picture.setImageBitmap(bitmap):将照片显示到ImageView控件上
- android.intent.action.GET_CONTENT:启动文件管理器的action,通过 intent.setType("image/*") 限制获取的文件格式
- mediaPlayer.setDataSource(file.getPath()):设置播放的音频文件的位置
- mediaPlayer.prepare():在开始播放之前调用该方法完成准备工作
- mediaPlayer.isPlaying():判断当前的media player是否正在播放音频
- mediaPlayer.start():开始或继续播放音频
- mediaPlayer.pause():暂停播放音频
- mediaPlayer.reset():将media player重置到初始状态
- mediaPlayer.stop():停止播放音频,调用该方法后,media player无法再播放音频
- mediaPlayer.release():释放掉与media player有关的资源
- videoView.isPlaying():判断是否正在播放视频
- videoView.start():开始或继续播放视频
- videoView.pause():暂停播放视频
- videoView.resume():将视频重头开始播放
- videoView.setVideoPath(file.getPath()):设置将要播放视频的文件位置
- videoView.suspend():释放videoView所占用的资源
class MyThread extends Thread {
@Override
public void run() {
// 处理具体逻辑
}
}
- new MyThread().start():继承Thread方式来定义一个线程并执行线程中的run()方法
class MyThread implements Runnable {
@Override
public void run() {
//处理具体逻辑
}
}
- new Thread(new MyThread()).start():实现Runnable接口的方式来定义一个线程
new Thread(new Runnable() {
@Override
public void run() {
//处理具体逻辑
}
}).start();
- 使用匿名类的方式定义一个线程
- Android中的UI是线程不安全的:更新UI元素的操作必须在主线程中完成
private Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case xxx:
//更新UI
break;
default:
break;
}
}
};
- handler.sendMessage(message):向Handler发送一条Message,在 handleMessage() 中进行接收并对UI更新
- AsyncTask是一个抽象类:需要创建一个子类继承他,在继承时可以为AsyncTask指定三个泛型参数,分别为Params,Progress,Result,并且根据需要,重写内部方法
- Params:在执行AsnycTask时需要传入的参数,可用于在后台任务中使用
- Progress:后台任务执行时,如果需要在界面上显示当前任务的进度,则使用这里指定的泛型作为进度单位
- Result:当任务执行完毕后,如果需要对结果进行返回,则使用这里指定的泛型作为返回值类型
- onPreExecute():任务开始之前调用,用于进行界面上的一些初始化操作,比如显示进度条
- doInBackground(Params...):在子线程中执行该方法,任务完成后可通过return语句来返回任务执行结果,类型与Results相同。如需要在该方法中更新UI,可调用 publishProgress(Progress...) 方法来完成
- onProgressUpdate(Progress...):调用了publishProgress(Progress...)方法之后,会很快调用该方法,在该方法中可以对UI进行操作
- onPostExecute(Result):当后台任务return返回之后,会调用该方法。返回的数据会传到该方法中,可以利用这些数据对UI进行操作。
- onCreate():该方法会在服务创建的时候调用
- onStartCommand():该方法会在每次启动服务时调用
- onDestroy():该方法会在服务销毁的时候调用
- startService(intent):启动服务
- stopService(intent):停止服务
- stopSelf():在服务中调用,使自身停止
- Binder:通过Binder对象,实现活动与服务之间的交互。服务在整个应用程序范围内是通用的,可以和任何一个activity进行绑定
- ServiceConnection类:用于活动与服务的绑定和解绑,包含两个方法 onServiceConnected()和onServiceDisconnected()
- onServiceConnected():在活动与服务成功绑定后调用
- onServiceDisconnected():在活动和服务成功解绑后调用
- bindService(bindIntent, connection, BIND_AUTO_CREATE):将活动与服务进行绑定,三个参数为 携带有Service的Intent对象,ServiceConnection实例,标志位 ,调用该方法会回调 **onBind()**方法
- unbindService(connection):解除绑定
- IntentService:继承该类的service会在子线程中运行的service,无需担心ANR问题,并且在服务运行完之后会自动关闭,调用 onDestroy() 方法
- onHandleIntent():该方法在子线程中运行,用以实现IntentService的逻辑
- <service>:注册该服务使之生效
- webView.getSettings():设置浏览器的一些属性
- webView.getSettings().setJavaScriptEnabled(true):让webview支持JS脚本
- webView.ysetWebViewClient():用于使用webview接收各种通知和请求
- webView.loadUrl():参数为需要打开的网址,调用该方法让webview打开相应的网站
- (HttpURLConnection) url.openConnection():通过URL对象的openConnection()方法,获取HttpURLConnection实例
- connection.setRequestMethod("GET"):设置HTTP请求所是用的方法
- connection.setConnectTimeout(8000):设置连接超时
- connection.setReadTimeout(8000):设置读取超时
- connection.getInputStream():获取服务器返回的输入流
- connection.disconnect():关闭HTTP连接
- SDK23 已经废弃该方法
- new DefaultHttpClient():获取HttpClient实例
- new HttpGet():创建一个HttpGet对象,发起GET请求
- httpClient.execute(httpGet):访问该网站
- new HttpPost():创建一个HttpPost对象,发起POST请求
- List<NameValuePair>:创建一个NameValuePair集合,用来存放待POST的参数,并将这个参数集合传入到一个UrlEncodedFormEntity中
- httpPost.setEntity(entity):将构建好的UrlEncodedFormEntity传入httpPost对象中
- httpResponse.getStatusLine().getStatusCode():获取服务器返回的状态码
- XmlPullParserFactory.newInstance():获取一个XmlPullParserFactory实例
- factory.newPullParser():创建一个XmlPullParser对象
- xmlPullParser.setInput(new StringReader(xmlData)):将服务器返回的XML数据设置到XmlPullParser对象中
- xmlPullParser.getEventType():获取当前的解析事件
- XmlPullParser.END_DOCUMENT:解析事件为该值时,证明解析完成
- XmlPullParser.START_TAG:XML一个解析事件开始的标签
- XmlPullParser.END_TAG:XML一个解析事件结束的标签
- xmlPullParser.getName():获取当前结点的名字
- xmlPullParser.nextText():获取当前结点的内容
- xmlPullParser.next():获取下一个解析事件
- DefaultHandler类:继承该类并重写父类的五个方法
- startDocument():在开始解析XML时调用
- startElement():在开始解析某个结点时调用,参数中localName为当前结点名称
- characters():在获取节点中内容的时候调用,需要注意一些换行符的解析也会调用该方法,应做好控制
- endElement():在完成解析某个结点的时候调用
- endDocument():在完成整个XML解析的时候调用
- SAXParserFactory.newInstance():获取SAXParserFactory对象
- factory.newSAXParser().getXMLReader():获取XMLReader对象
- xmlReader.setContentHandler(handler):将DefaultHandler实例设置到XMLReader中
- xmlReader.parse(new InputSource(new StringReader(xmlData))):开始对XML数据进行解析
- new JSONArray(jsonData):将网络发回的数据传入到JSONArray对象中
- jsonArray.getJSONObject(i):取出每一个jsonObject对象
- jsonObject.getString("id"):根据标签名从jsonObject对象中取出对应数据
- GSON可以自动将一段JSON格式的字符串映射成一个对象:创建一个自定义类,并且声明与JSON字段名同名的变量,即可通过GSON自动将JSON解析成该类对象
- gson.fromJson(jsonData, new TypeToken<List>() {}.getType()):通过该方法即可将JSON数组解析成需求类型的对象
- <WebView>:用于显示网页的webview控件
- <ScrollView>:允许以滚动形式查看屏幕外的那部分内容
- <uses-permission android:name="android.permission.INTERNET" />:获取手机联网的权限
- getSystemService(Context.LOCATION_SERVICE):获取LocationManager实例
- locationManager.getProviders(true):获取可以使用的位置提供器,三种位置提供器分别为NETWORK_PROVIDER、GPS_PROVIDER、PASSIVE_PROVIDER
- locationManager.getLastKnownLocation(provider):将位置提供器传入到该方法,得到一个Location对象
- location.getLatitude():获取纬度信息
- location.getLongitude():获取经度信息
- locationManager.requestLocationUpdates(provider, 5000, 100, locationListener):随时更新位置信息,四个参数为位置提供器,刷新时间间隔,刷新距离间隔,LocationListener实例
- <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />:获取设备当前的位置信息的权限
- RecyclerView
- Cardview
- Paint
- Canvas
- Matrix
- Material Design
- SwipeRefreshLayout
- DrawerLayout
- TabLayout
- Fresco
- MVC
- MVP
- Retrofit
- OkHttp
- RxJava
- RxAndroid
- Volley
- Butter Knife
- Otto
- Piccaso
- Glide
- Android-common
- Dagger
- Gson
- Flowlayout
- EventBus
- Timber
- Android-lite-orm
- ijkplayer