Android
文章平均质量分 70
BetterDaZhang
做软件开发,个人感觉要勤于思考和坚持不懈。
展开
-
浅谈Android视频缓存库
我们都了解播放器的作用就是把音视频压缩数据转换成原始的音视频数据渲染出来,这样我们就可以看到画面、听到声音了。这里的播放器就存在两个问题,第一个问题是视频源存在云端,我们每次看完视频之后重新观看,需要重新请求远端视频数据,这就会造成带宽的浪费。第二个问题是视频的秒开体验当我们从Feed流点击视频播放的时候,由于需要从云端获取视频,造成秒开体验较差。我们该如何去解决这两个问题呢?这就是我们今天要说的视频缓存库的核心功能了。下面让我们走进Android视频缓存库,看它是如何设计、如何优雅的解决这两个问题的。下面原创 2022-06-17 09:55:08 · 1866 阅读 · 1 评论 -
内部Handler类引起内存泄露
如果对内存泄漏与内存溢出有不明白的可以看看我的内存泄漏与内存溢出的区别?如果您在Activity中定义了一个内部Handler类,如下代码:public class MainActivity extends Activity { private Handler mHandler = new Handler() { @Override public void h转载 2016-03-30 21:23:44 · 280 阅读 · 0 评论 -
Android完全退出应用程序
在Android开发中如果想退出应用程序,一般都是调用finish()、System.exit(0)、android.os.Process.killProcess(android.os.Process.myPid())等方法实现退出程序功能,可是在实际开发中,并不能达到完全退出应用程序的效果。这是因为调用finish()、System.exit(0)、android.os.Process.killP转载 2016-04-10 21:15:41 · 411 阅读 · 0 评论 -
LoaderManager使用详解(一)---没有Loader之前的世界
来源: http://www.androiddesignpatterns.com/2012/07/loaders-and-loadermanager-background.html 感谢作者Alex Lockwood的努力,让我们看到如此精彩的文章。1、第一部分 没有Loader之前的世界这一部分将对Loaders和LoaderManager做一个简短的介绍。第一节将在Android3.0之前如转载 2016-04-24 18:16:12 · 387 阅读 · 0 评论 -
LoaderManager使用详解(二)---了解LoaderManager
了解LoaderManager这篇文章将介绍LoaderManager类,这是该系列的第二篇文章。 一:Loaders之前世界 二:了解LoaderManager 三:实现Loaders 四:实例:AppListLoader注意: 要了解LoaderManager这部分知识,要求对Loaders如何工作有基本的了解。Loaders的实现将在下一遍文章中讲解。现在你只需要将Loaders看成转载 2016-04-24 18:39:54 · 273 阅读 · 0 评论 -
LoaderManager使用详解(三)---实现Loaders
这篇文字将介绍Loader类,并且介绍自定义Loader的实现。这是本系列的第三篇文章。一:Loaders之前世界 二:了解LoaderManager 三:实现Loaders 四:实例:AppListLoader重中之重,如果你还没有读过前面两篇文章,我建议你在深入之前先读一读那两篇文章。先简短的总结一下这篇博客覆盖了什么内容。Loader之前的世界(第一篇)描述了Android3.0之前的数转载 2016-04-24 18:54:09 · 444 阅读 · 0 评论 -
LoaderManager使用详解(四)---实例:AppListLoader
实例:AppListLoader这篇文章将是我的第四篇,也就是最后一篇该系列的文章。请在评论里面告诉我他们是否有用。前面几篇文章的链接如下:一:Loaders之前世界 二:了解LoaderManager 三:实现Loaders 四:实例:AppListLoader应大众的要求,我已经写了一个示例应用演示如何正确的实现一个自定义Loader。应用名称为:AppListLoader,它是一个演示应转载 2016-04-24 19:06:48 · 359 阅读 · 0 评论 -
通过 LoaderManager + CursorLoader加载通讯录中所有人
通过上面4篇LoaderManager的学习,我们可能已经熟悉了LoaderManager。可能第四篇学习时,我们会感觉好有点小吃力。 所以我们现在从最基础的Demo练习。先不自定义Loader,先实现一个简单的小Demo。通过Fragment加载通讯录中所有人因为好长时间没用过Fragment了,今天重新练练Fragment。1、自定义Fragment//CursorLoaderFragment原创 2016-04-26 22:04:18 · 568 阅读 · 0 评论 -
Android应用Loaders全面详解及源码浅析
本篇博客来自于工匠若水,非常感谢写了这么精彩的文章。1、背景在Android中任何耗时的操作都不能放在UI主线程中,所以耗时的操作都需要使用异步实现。同样的,在ContentProvider中也可能存在耗时操作,这时也该使用异步操作,而3.0之后最推荐的异步操作就是Loader。它可以方便我们在Activity和Fragment中异步加载数据,而不是用线程或AsyncTask,他的优点如下:提供异步转载 2016-04-26 22:51:44 · 677 阅读 · 0 评论 -
Android APP终极瘦身指南
Android APP终极瘦身指南转载 2017-11-30 14:10:57 · 279 阅读 · 0 评论 -
Gson
GSONJSON 介绍Gson 下载Gson 解析 和 格式化Gson 格式化Gson 解析 Json 介绍Json 全称 JavaScript Object Natation ,用来描述数据结构,它是基于纯文本的数据格式, 是一种轻量级的数据交换格式。广泛应用于 服务端 与 客户端 的数据交互。格式Json 以 key-value的形式存储数据;Key的取值 为 String 类型;原创 2016-05-24 11:17:37 · 518 阅读 · 1 评论 -
Android View.setOnclickListener(),View.onTouchEvent(),View.setOnTouchListener()关系源码分析
同样是在上一篇文章中代码,我们给Acitvity中的mView添加一个监听器:myView.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub Log.v(MyLinearLayout.原创 2016-04-09 18:57:15 · 6709 阅读 · 0 评论 -
Android之观察者模式源码分析(DataSetObserver)
在阅读本片文章之前希望你先看下上篇的博客Java设计模式之观察者模式1、分析理解Android中我们常用的观察者是:DataSetObserver、ContentObserver ContentObserver : 可能我们在学ContentProvider时接触过ContentObserver;当我们添加、删除、更新数据时,通过它来为我们共享的数据添加监听器。 DataSetObserver:原创 2016-04-30 21:08:27 · 603 阅读 · 0 评论 -
Android中如何自己创造一个Cursor及MatrixCursor源码分析
我们有时在处理数据时可能用Cursor比较方便。但我们如何自己创造一个Cursor呢?这时我们可以用Android为我们提供的MatrixCursor类,自己创造一个Cursor。下面通过一个事例来分析,如何创造一个Cursor作为SimpleCursorAdapter的数据来源。1、Activity布局 android:textSize="24sp" androi原创 2016-04-30 23:24:47 · 3662 阅读 · 0 评论 -
Android引用Library的若干问题(全都是坑啊,一定要注意了)
1.库工程里面的assets文件夹无用,不会被打包到APK2.库工程里面的AndroidManifest.xml无用,要声明Activity,必须写到主工程3.当库工程文件中的资源ID和主工程中的资源ID相同时,主工程的资源ID将会覆盖掉库工程的资源ID4.当主工程所引用的两个库工程中有相同的ID时,Android编译工具会选择一个优先级高的ID 进行合并到主工程,而抛弃另一个工程的ID5.库工程使转载 2017-08-02 20:12:33 · 5856 阅读 · 2 评论 -
Android 小知识
一、创建Dialog时 Dialog dialog = new Dialog(getApplicationContext()); 传入getApplicationContext()上下文在运行期间为什么报错?Caused by: android.view.WindowManager$BadTokenException: Unable to add window -- token null is no原创 2017-01-05 18:36:00 · 324 阅读 · 0 评论 -
自定义监控器
我们在Android编程中经常会看到为控件设置监听器。今天在工作中发现有好多自定义的监听器,便写了一遍博客,让我们来讲一讲如何自定义一个监听器;首先让我们先分析一下如果自定义一个监听器需要哪些条件: (1)定义一个接口(监听器) (2)在什么条件下调用我们的接口(更多的情况下,我们是重写父类的方法,在指定的条件下来调用我们的接口。有时我们也可以设置一个定时器在指定的时间间隔调用)实例一(通过重写原创 2016-04-15 22:10:00 · 316 阅读 · 0 评论 -
Service中onStartCommand()理解
有时候我们会很诧异一个现象: 当我们在Activity中通过startService()开启一个服务时,我们之后直接System.exit(0)或android.os.Process.killProcess(android.os.Process.myPid());结束进程;但启动的Service依然可以在后台重新启动;下面Demo演示:1>Activity:public class MainAct原创 2016-04-10 17:30:21 · 16154 阅读 · 6 评论 -
Android中的dispatchTouchEvent()、onInterceptTouchEvent()、onTouchEvent()和setOnTouchListener()
1、事件理解:1> dispatchTouchEvent() : 处理事件分发return true,表示事件被分发; 2> onInterceptTouchEvent() :事件拦截(改变事件的传递方向),return false表示传递给子控件的onTouchEvent(),return true表示传递给当前控件的onTouchEvent(); 3> onTouchEvent():retu原创 2016-04-09 15:39:13 · 1002 阅读 · 0 评论 -
Android蓝牙通信
蓝牙有两部分组成:1、搜索和绑定:不区分客户端和服务器端,通过BluetoothAdapter.startDistovery()来搜索周围可用的蓝牙设备。 2、连接和数据传输;区分客户端和服务器端;当我们进行数据传输时,总要有一端是客户端负责发送数据,一端服务器端负责接收数据(蓝牙进行连接有两种方式,下面将进行详细介绍);Android中的蓝牙通信有5步:1:获取本地蓝牙适配器BluetoothA原创 2016-04-04 21:37:01 · 394 阅读 · 0 评论 -
查询网络连接状态
应用程序有时需要检查网络连接状态,有三种方法:1:通过ConnectivityManager来监控设备的网络连接状态和网络连接类型; 2:通过注册广播BreadcastReceiver来检测网络连接的变化; 2:通过PhoneStateListener来监控设备的网络的连接状态和网络连接类型;ConnectivityManager1:需要加权限:<uses-permission android:原创 2016-04-12 21:36:54 · 2647 阅读 · 0 评论 -
Android Studio Java代码调试及NDK调试
Android Studio Java代码调试debug模式断点调试写一个简单的调试程序,我们先来一个for循环;设置断点(点击红点位置添加或取消断点) 点击debug模式运行 查看调试面板简单调试step over:一步步往下走 当前程序运行的位置,我们看到i的值已经在程序代码中展示出来了,黄色的代码处,这个是AS的功能,对于我们调试来讲,这简直是转载 2018-01-24 14:11:13 · 2608 阅读 · 0 评论 -
Android长时间及连续两次按BackUp按键退出程序
今天自己学习了Android按BackUp按键退出程序的小Demo,发现网上有好多实例,但感觉他们的能解决问题,但可能会存在内存泄漏的问题,今天就自己总结了一下!分析问题: 1>重写Activity中的onKeyDown()方法 2>定时器其中(Handler、Timer、ScheduledExecutorService)一个或通过时间差 3>一个退出程序的标志由于我们可能在Activity中原创 2016-04-10 19:47:43 · 445 阅读 · 0 评论 -
Android 网络框架学习之Retrofit
前言:AndroidHTTP请求库用Retrofit即可,有图片的加上Android-Universal-Image-Loader(或者Picasso),如果有Retrofit不能满足你的要求的话再用okhttp。一般情况下,前两个已经能很好解决大部分问题了,且用起来都比Volley简单多了。 后面将 依次学习使用Retrofit、OKHttp和GSONRetrofit:A type-safe R原创 2016-05-23 00:18:46 · 521 阅读 · 0 评论 -
Android坐标系
1、背景在自定义View开发中我们经常需要求一个View的宽、高;以及我们触摸事件(MotionEvent)的X,Y坐标;经常搞不明白他们的值,今天刚好星期天就网上查了资料,总结一下;2、理解我们之前学物理时,接触到相对的概念。一个物体的动与静是根据参考不同结果也是不一样的。同样在Android中,我们在求一个坐标时,根据我们的不同的API,它的参考点也是不一样的。我么只有明白了在什么情况下参考点在原创 2016-07-30 18:13:26 · 311 阅读 · 0 评论