android开发系列之ContentObserver】的更多相关文章

在这篇博客里面我想要分享一下自己最近在项目里面遇到一个比较好的数据同步解决方案,首先让我们先来看看该方案的应用场景:我们在客户端本地利用数据库缓存了一些数据,当我们检测到数据库里面的数据发生变化的时候,我们希望程序能够实时自动的将这些变化的数据发送到服务器. 当你接到这个任务的时候,你会想到使用什么样的解决方案呢?首先需要实现自动化,那么我们应该首先想到的就是在后台默默的开启一个service,利用这个Service去发送变化的数据.但是这里面还有一个最关键的问题就是怎么检测数据库数据变化呢?这…
什么是Android Android一词最早是出现在法国作家维里耶德利尔·亚当1986年发表的<未来夏娃>这部科幻小说中,作者利尔·亚当将外表像人类的机器起名为Android,这就是Android小人名字的由来.Android的Logo是由伊琳娜-布洛克设计的,设计灵感来源于男女厕所门上的图形符号,外加头上两根天线. Android 发展史 1.AndroidBeta(阿童木)2008年8月18日发布(内测版) 添加一些新的开发工具,例如Eclipse layout布局支持预览,支持编辑9-p…
1.关于坑 好吧,在此之前先来说一下,之前开的坑,恩,确实是坑,前面开的两个android开发教程的坑,对不起,实在是没什么动力了,不过源码都有的,大家可以参照github这个应用 https://github.com/joveth/laughter 里面的 代码,相关介绍见http://joveth.github.io/funny/ 2.新说明 好吧,既然无事为何不填坑,反而开了新坑呢,恩,主要是这个较简单啊,两天搞定的简单东西……我XXX,你大爷的……- -!   3.成果 话不多说,跟以前…
经过前两篇blog的铺垫,我们今天热身一下,做个简单的例子. 目录结构还是引用上篇blog的截图. 具体实现代码: public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 方法1.…
上篇博客提到过SQLite,它是嵌入式数据库,由于其轻巧但功能强大,被广泛的用于嵌入式设备当中.后来在智能手机.平板流行之后,它作为文件型数据库,几乎成为了智能设备单机数据库的必选,可以随着安卓app打包到apk文件当中. SQLite的官方网站是http://www.sqlite.org/,可以任意下载,上面也有详尽的文档可以参考,这篇博客重点关注SQLite在Android开发中如何使用. 在Android开发中,推荐建立一个类继承自SQLiteOpenHelper来创建数据库操作类,比如:…
今天开始正式学习Android开发的种种细节,首先从最基本的概念和操作学起. 首先看一下Android项目的目录结构. 这是我随便建立的一个test项目,我们重点关注一下几个方面的内容: 1.src目录:存放Java源代码的目录,里面建立一个包,包里面有4个java源文件(分别都继承自Activity).由于java要求比较严格,因此要求类名与文件名一致. 2.gen(Generated Java Files)目录:自动产生Java源文件的目录,是由工具自动生成的,一般不需要自己修改.里面主要有…
通过前面的3篇博客已经简单的介绍了Android开发的过程并写了一个简单的demo,了解了Android开发的环境以及一些背景知识. 接下来这篇博客不打算继续学习Android开发的细节,先停一下,明确一下接下来的学习目标以及学习路线. 一.对Android开发的基本认识 1.Android原生开发是基于Java语言的,由于我比较擅长C#,所以对Java语言本身不太熟练,需要加强Java语言基础的练习,这一块我会穿插到具体的知识点练习当中,并且在必要的地方给出与C#语言的对比(其实基本上在语法层…
接触Android好久了,记得09年刚在中国大陆有点苗头的时候,我就知道了google有个Android,它是智能机操作系统.后来在Android出1.5版本之后,我第一时间下载了eclipse开发工具.adt以及android sdk,体验了一把android开发,记得当时搭建开发环境相当麻烦.由于android开发是基于Java的,所以除了上述的工具之外,首先需要安装jdk,记得当时流行的是jdk1.5(后来是1.6,现在是1.7,未来是1.8),安装好之后需要设置环境变量. 时隔4年之后,…
概述 VS自2015把Xamarin集成进去后搞Android开发就爽了,不过这安装VS2015完成的时候却是长了不知道多少.废话少说进正题,VS2015安装时注意把Android相关的组件勾选安装,别组件都没安装就来用VS搞Android开发. VS2015的Android组件安装完成后并不是什么都不用做了,要注意三个问题: 需要自己下载Android SDK JDK的版本 HAXM的安装 下载Android SDK 推荐下载地址:http://sdk.android-studio.org/…
今天开始准备Android开发环境,FQ下载Android Studio,官网下载地址 https://developer.android.com/studio/install.html (突然发现我用的vpn下载还挺快~~ 1G 不到10分钟搞定了~~)安装后发现和视频中不一致啊 对比过后发现好像 Android Studio 是Google新推出的Android开发平台,貌似更加强大,learning... 安装后,添加app项目,hello world 页面, 启动App Run 报错,无…
因为对移动端开发开始感兴趣,开始学习App开发,没有苹果环境的我,只好先选择Android来玩一玩了~~ 找了一套视频,买了几本java.android开发的书,开始搞起~~…
在Android开发的过程中,我们常常须要对控件的样式做一下改变,能够通过用添加背景图片的方式进行改变,可是背景图片放多了肯定会使得APK文件变的非常大. 我们能够用自己定义属性shape来实现. shape: gradient   -- 相应颜色渐变. startcolor.endcolor就不多说了. android:angle 是指从哪个角度開始变. solid      --  填充. stroke   --  描边. corners  --  圆角. padding   -- 定义内容…
经过前两篇blog的铺垫,我们今天热身一下,做个简单的样例. 文件夹结构还是引用上篇blog的截图. 详细实现代码: public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 方法1.…
对于Android开发者来说,如果没有adb的帮助,那肯定就跟少了一只手那样别扭.其实笔者在刚刚学习Android开发的时候,也没有意识到adb的重要性.想想只要用IDE画出界面,然后实现后台的逻辑代码,貌似App也可以很好的运行起来了,但是我们应该去持续的跟踪App的使用.运行情况,想想如果用户报了个crash bug,但是你自己又复现不了.这个时候我们应该怎么办呢?如果你了解adb的强大之处,就可以抓取log进行分析了. adb位于sdk的platform-tools目录下面,所以当我们下载…
aidl在android开发中的主要作用就是跨进程通讯来着,说到进程相比很多人都是非常熟悉了,但是为什么会有跨进程通讯这个概念呢?原来在android系统中,有这么一套安全机制,为了各个Apk数据的独立性.安全性,它们彼此之间是不能直接进行数据的访问的.所以为了实现多个APK之间的数据.方法.代码复用,我们通常采用的做法就是定义好AIDL接口,这样就能够既保护现有代码的逻辑性.同时又能够兼顾好封装性,各个团队之间只需要沟通好AIDL接口定义就可以了. 下面让我们直接进入主题吧,在进行AIDL定义…
在android开发的过程中,有的时候面对多个Activity里面一些相同的布局,我们需要写多次相同的代码,同时这种方法给我们的项目维护也带来了很大不便.那么有没有一种可行的办法能够将Activity里面相同的布局拆分的很清楚呢?当然是有的,这个时候就轮到自定义控件闪亮登场了. 其实在android里面有多种方法去实现自定义控件,但是今天这篇博客里面只介绍使用xml的方式进行自定义控件的创建.请看下面的这种场景,不管在哪个页面里面都有个标题,包括一条居中的文本信息和在左边的返回按钮.这个时候我们…
后面的系列博客,我将会写一写自己这段时间对于android的学习.认识.体会,希望能够与大家分享. 相信大家从ADT开发切换到android studio最大.最直观的变化就是gradle,因为在android studio里面是利用gradle去构建整个项目的.那么gradle到底是什么东西呢?为什么google官方提供的开发工具android studio里面要集成gradle呢?优势在哪呢? gradle是一种构建工具,它抛弃了传统的基于xml构建脚本,而是采用基于Groovy的内部领域特…
最近在开发一个android的项目中,发现了一个很实用的设计模式(MVP).大家可能一看到这个名字就有点蒙,MVP到底是什么鬼呢?它的好用到底体现在哪呢?别着急,下面就让我们一一分享出来. 说到MVP,大家也许就会想到MVC.没错,其实他们两者之间确实有很大的联系,MVC相比大家都是非常的熟悉了,典型的三层框架.但是MVC在使用的过程中有什么弊端呢?就我自己的理解是它会导致Control层和Model层衔接太紧密,因为有的时候你必须从Model里面读写数据.而MVP呢?它是在Model和View…
上周在项目遇到一个接口需求就是通讯系列必须是socket,所以在这篇博客里面我想谈谈自己在socket编程的时候遇到的一些问题. 其实在android里面实现一个socket通讯是非常简单的,我们只需要在代码里面实现一个Socket对象,同时在该对象里面传进一个ip/port,同时设置一些超时时间就可以了.代码如下: public class SocketThread extends Thread { private String ip = "192.168.129.1"; priva…
今天在这篇博客里面,我只想谈谈自己对程序开发里面避无可避的一个问题-多线程的一些看法与思考. 其实说到多线程这个名称相信只要接触过软件这个行业的人都已经耳熟能详了,但是如果被问到到底什么才是多线程呢?为什么我们会需要多线程呢?多线程又会造成什么副作用呢?其实这些都应该是值得我们深入思考的一些问题,因为在多线程的环境里面,往往会发生一些意想不到的事情.下面让我们来针对android平台来具体看看多线程应该是怎么一回事呢?其实在android里面,系统已经为我们提供了一些封装好的多线程api,比如r…
相比大家都遇到这种情况,当我们的app上线之后,我们想要实时的跟踪了解到app里面的bug情况.新增用户情况.用户相关的行为属性情况等.但是如果自己在app里面去开发集成这些功能,一方面开发工作量还挺大(包括前后端),另一方面统计信息也有可能非常不准确.不全面.那么有没有其他厂商去帮我们做这些事情呢?这个时候友盟就该闪亮登场了. 今天我们主要看看在android app里面想要集成友盟的话,我们需要做哪些步骤呢?首先我们可以进到友盟的android文档中心,参考文档去集成,我们总结为以下几步:1…
首先,感谢使用这款软件并给我意见的朋友们,有你们的意见,才有了这个版本. 其次,检索功能和分类筛选功能(如果是你提的意见,记得在下面mark哦,毕竟读代码你能发现,其实发意见这个就是用自己的邮箱给自己发邮件而已)我也在考虑和权衡,关于开发的经验,纯粹是自己喜欢android而已啊. 再次,关闭提bug的那位同学,这里真的要特别感谢你,bug已经修复了,看看是否满意呢?原因:iteye的刷新退出bug,是由于iteye的网站好像很不稳定,总是请求不到内容,就导致了对html结果格式化的时候报出了n…
Android图表控件的开发 曾经开发过一个小程序,在Android电视机上面开发一个APP,用于显示一些统计图表的信息.最后找来找去基于Android Native开发有AChartEngine现成的组件可用,于是就直接导入jar包,看api文档进行了开发.当然这只是一个客户端程序,数据的来源需要通过服务端程序获得,项目中通过wcf返回json格式的数据. 代码片段 new Thread(new Runnable() { @Override public void run() { SoapOb…
我在学习Android开发过程中遇到的第一个疑问就是Android客户端是怎么跟服务器数据库进行交互的呢?这个问题是我当初初次接触Android时所困扰我的一个很大的问题,直到几年前的一天,我突然想到WebService是否可以呢?让WebService充当服务器端的角色,完成与服务器数据库操作相关的事情,而Android客户端只要按照WebService方法参数的要求去调用就行了.在当时我对这个解决方案的实现还没模糊,我想这个问题也是初学Android的朋友肯定会想到的问题.那么现在就让我们动…
Activity中常用的获取屏幕像素代码: //获取屏幕像素相关信息 DisplayMetrics dm = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(dm); 在开发时,我使用的fragment继承自android.support.v4.app.Fragment,getWindowManager()这个 方法在fragment中并没有该方法, 因为只有继承自Activity才包含该方法,那么在…
配置Android模拟器 这算是第一篇漏下说的,配置好VS的各参数,新建Android项目后,会发现菜单下的工具栏会多出Android相关的工具栏,红色圈出的就是AVD. 打开AVD后可以从模版处选一个设备,然后自己再做细节参数调整. 然后选择要模拟的版本,因为APP有蓝牙BLE的支持需求,所以选择了至少API Level18,注意如果安装了HAXM,CPU/ABI项一定要选"Intel Atom (x86)",如果没有,说明组件未安装,赶紧去下载后再来:另外一个注意点是内存至少3G,…
相信大家对于Google给出的那副经典Android架构图非常的熟悉,从下往上依次是Linux内核层(主要是负责硬件管理调度),HAL层(主要是硬件抽象层),libs层+Runtime,Framework层,App层.今天在这里我想对于各个层级的目录结构做一个细分整理,本次的目录结构是基于Android7.0系统,如果有什么不对的地方欢迎拍砖. 当我们进到Android源码目录之后,从左往右依次有bionic文件夹,该文件夹里面放置主要是Google为了取代Glibc而开发出来的C运行库,官方的…
今天在这篇博客里面,我想说说自己在这几天遇到的一个棘手的问题,就是视频断点续传的问题.其实这在我们开发中是一个很常见的应用场景,比如视频.音频.pdf等相关的文档.如果之前没有接触过的话,你也许会被这个问题给吓到,也许会有一种找不到北的感觉,但是如果你了解其中的原理的话,就会觉得很简单. 让我们先来讲讲视频断点续传的原理吧,当我们需要将文件存储到磁盘空间里面的时候,最总的存储格式肯定是二进制字节.这样的话,我们在存储文件字节的同时记录下当前文件字节的长度,已经存储的文件字节长度.这样的话,我们不…
一.  Android系统版本及详细信息 最新数据  https://developer.android.com/about/dashboards/ 二.  Android项目初探 1.    使用android studio创建一个工程 Application Name:“My First App” Company Domain:“example.com” Project和module联系和区别 一个 Project 可以有多个 Module.目前主流的大型项目是多Module结构的,模块之间…
Retrofit是一个不错的网络请求库,用官方自己的介绍就是: A type-safe REST client for Android and Java 看官网的介绍用起来很省事,不过如果不了解它是怎么实现的也不太敢用,不然出问题了就不知道怎么办了.这几天比较闲就下下来看了一下,了解一下大概实现方法,细节就不追究了.先来看一个官网的例子,详细说明去网官看 简单示例 首先定义请求接口,即程序中都需要什么请求操作 public interface GitHubService { @GET("/use…