- 博客(15)
- 资源 (23)
- 收藏
- 关注
原创 android创建数据库,表整体流程
实例化SQLiteOpenHelper,调用getWritableDatabase() 或 getReadableDatabase(),当检测到当前程序中还没有创建指定的数据库时,于是会创建数据库并调用SQLiteOpenHelper实例中的onCreate()方法,这个方法中,我们通常会使用SQLiteDatabase调用execSQL来创建数据库表,此时,数据库和表就都创建好了。当检测到要...
2018-02-28 16:06:48 1409
原创 瞬时数据,android中的数据持久化及方式
瞬时数据:指那些存储在内存当中,有可能会因为程序关闭或其它原因导致内存被回收而丢失的数据。 数据持久化就是指将那些内存中的瞬时数据保存到存储设备中,保证即使手机或电脑关机的情况下,这些数据仍然不会丢失。 保存在内存中的数据是处于瞬时状态的,而保存在存储设备中的数据是处于持久状态的,持久化技术则提供了一种机制可以让数据在瞬时状态和持久状态之间进行转换。 Android系统中主要...
2018-02-28 11:32:39 536
原创 本地广播
首先,我们都知道广播是一种跨进程的通信方式,这一点从应用程序可以接收系统广播就可以看出来。 其次,我们通常发送和接收的广播全部属于系统全局广播,即本程序发出的广播可以被其它任何应用程序接收到,并且本程序也可以接收到来自其它任何应用程序发送的广播。这样很容易引起安全问题,比如说我们发送的携带关键性数据的广播可能会被其它应用程序截获,或者其它的应用程序可能会不停向我们的广播接收器发送垃圾广播...
2018-02-27 16:38:17 415
原创 让一份程序同时适应手机和平板,动态加载布局的技巧
由于平板电脑的屏幕足够大,我们会发现很多应该采用了双页模式即程序在左侧面板上显示一个包含子项的列表,右侧面板显示内容,而手机屏幕一次只能显示一页内容,因此两个页面需要分开显示。 为了让碎片发挥更大的空间,我们可以考虑如何才能让程序根据设备的屏幕大小和分辨率在运行的时候动态加载哪个布局,那就是使用限定符。 比如: 单页模式:res/layout/activity_main,xm...
2018-02-27 10:49:01 766
原创 碎片(Fragment)的状态与附加回调
跟活动一样,碎片在其生命周期内也会经历运行状态,暂停状态,停止状态以及销毁状态这四种状态,下面将分别进行说明。运行状态: 碎片可见并且它所关联的活动正处于运行状态时。暂停状态: 当一个活动进入暂停状态即由于另一个未占满屏幕的活动被添加到栈顶时,与它相关联的可见碎片就会进入暂停状态。停止状态: 当一个活动进入停止状态时,与它相关联的碎片就会进入停止状态。或者通过调用Fra...
2018-02-27 02:22:12 419
原创 活动与碎片之间以及碎片与碎片之间进行通信
活动->碎片DetailFragment fragment = (DetailFragment)getFragmentManager().findFragmentById(R.id.detail_fragment);碎片->活动MainActivity activity = (MainActivity)getActivity();碎片->碎片思路:...
2018-02-27 01:43:57 680
原创 RecyclerView由来及使用模板
为什么要使用RecyclerView ListView由于其强大的功能,直到今天仍有不计其数的程序在使用ListView。但是ListView也有自身的缺陷。比如:如果不使用一些技巧来提升它的运行效率,那么它的运行效率会非常差;ListView的扩展性也不够好,目前只能实现纵向滚动的效果,如果我们有横向滚动的需求,那么ListView就无法实现了。 为此,官方推荐使用一个功能更加强大...
2018-02-26 17:52:40 187
原创 ListView滑动性能优化三步曲
我们将问题定位在ListView的适配器中的getView(int position, View convertView, ViewGroup parent)中: 1. 最初的写法即加载子项布局View,获取View中的控件实例,对各控件实例进行赋值,最后再返回这个View。这样的写法每次都会重复加载布局,运行效率最低。 2. 仔细观察会发现,getView()方法中有一个conv...
2018-02-26 10:46:43 221
原创 LayoutInflater的inflate()方法参数说明
这里以ListView的适配器为例说明,在适配器的getView()方法中,我们在加载ListView的子项布局时,会这样写: View view = LayoutInflater.from(getContext()).inflate(resourceId, parent, false); 前两个参数我们已经知道是什么意思了,第三个参数指定成false,表示只让我们在父布局中声明的...
2018-02-26 09:36:24 942 3
原创 左中右结构标题栏实现技巧
标题栏: 两种实现方式: 1. 使用RelativeLayout(这种方式在此不实现) 2. 使用LinearLayout(重点介绍)<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" ...
2018-02-25 01:43:43 845
原创 百分比布局
在常用的布局LinearLayout, RelativeLayout, FrameLayout中,只有LinearLayout支持使用layout_weight属性来实现按比例指定控件大小的功能,其它两种布局都不支持。 为此,Android引入了一种全新的布局方式来解决这个问题——百分比布...
2018-02-25 00:55:04 260
原创 快速判断当前所在活动,快速退出程序
如何知道当前在哪个活动 新建BaseActivity(继承自AppCompatActivity)但不需要注册,在onCreate()方法中写Log.e(“BaseActivity”, getClass().getSimpleName()),最后修改让BaseActivity成为项目中所有活动的基类。如何随时随地退出程序2.1. 编写活动管理器public class Activit...
2018-02-22 19:00:07 142
原创 启动模式之singleTask和singleInstance之间的关联
不同于其它3种启动模式,指定为singleInstance模式的活动会启用一个新的返回栈来管理这个活动,其实如果singleTask模式指定了不同的taskAffinity,也会启动一个新的返回栈。附:如何解决活动实例共享? 每个应用程序都会有自己的返回栈,同一个活动在不同的返回栈中入栈时必然是创建了新的实例,而在singleInstance模式下会有一个单独的返回栈来管理这个活动,不管...
2018-02-22 17:19:58 722
原创 Android Studio快速补全日志及生成TAG
在方法外即定义变(常)量的地方,输入logt,然后按下Tab键,这时就会以当前的类名作为值自动生成一个TAG常量。在方法中输入logd,然后按下Tab键,就会自动补全一条debug级别的日志,其它级别以此类推。...
2018-02-13 05:24:07 6142
原创 android5.0及以上版本特性
android5.0 使用ART运行环境替代了Dalvik虚拟机,大大提升了应用的运行速度,还提出Material Design的概念来优化应用的界面设计。除此之外,还推出Android Wear,Android Auto,Android TV系统,从而进军可穿戴设备,汽车,电视等全新领域。android6.0 加入运行时权限功能android7.0 加入多窗口模式功能...
2018-02-12 18:31:18 405
Android开发艺术探索之高清版本
2018-02-02
Android源码设计模式解析与实战.PDF(高清完整版)
2017-12-05
android气泡式对话列表
2014-09-14
android4.0.*源码
2014-08-14
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人