android开发
古飞龙
寻找真谛
展开
-
内存泄漏-内部类
java 内存泄漏之内部类原创 2023-06-09 16:47:59 · 104 阅读 · 0 评论 -
socket java.net.BindException: bind failed: EACCES (Permission denied)
今天搞了半天,查了半天,才发现真正的问题。引起整个异常的最有可能的是两种情况:1、没有给权限; a、AndroidManifest.xml中没有添加权限申请;<uses-permission android:name="android.permission.INTERNET"/> b、权限申请写的格式不对<!-- 错误的写法 --><uses-permission android:name...原创 2021-10-21 15:14:41 · 1595 阅读 · 0 评论 -
Android 使用 Gradle 自增长版本号 并更改打包文件名称
Android 使用 Gradle 自增长版本号 并更改打包文件名称 1、在module下创建Version.properties文件2、代码3、打包更改apk文件名称1、在module下创建Version.properties文件如题,目录如下:文件中内容如下:2、代码/** * @param filename 要打开的文件名字,保存版本信息的文件 * @param propName 文件里面的键名字,version_code,version_name * @return 所选择的文件原创 2020-07-15 14:49:12 · 591 阅读 · 0 评论 -
Android 覆盖安装失败
Android 覆盖安装失败 INSTALL_FAILED_ALREADY_EXISTS原创 2017-06-20 16:46:04 · 1633 阅读 · 0 评论 -
Android 启动模式之三 singleTask
Android 启动模式解惑 :singleTask原创 2017-06-08 14:02:57 · 446 阅读 · 0 评论 -
Android应用 欢迎页 登录页 闪屏页 首页 按home键后 点图标重复启动问题
首先我们来看现象:1、第一次点击图标启动应用是启动首界面A,然后进入第二个界面B;按home键后,再次点击图标,进入的页面B,而不是A为什么?2、当我们通过QQ上调用手机浏览器打开网页之后,点击手机浏览器桌面图标再次打开浏览器,发现不是刚刚从QQ打开浏览的网页,为什么?第一个现象;1、启动新应用 一般情况下当我们启动一个应用后系统会新建一个Task用来存放Activity的实例,一个一个挨个放进去...原创 2017-06-07 15:39:04 · 4125 阅读 · 0 评论 -
Android Activity 启动模式:Intent 的Flag
一直没有仔细的研究过Intent的Flag,因为感觉没有什么问题,最近项目上发现页面乱跳,设置的比较混乱,决定好好整理整理!在介绍四个模式之前介绍一个东西:taskAffinity 这个平常都没有怎么注意到,直到这次才发现一个这么重要的东西被我忽略掉了!这个属性在application节点与activity节点上都有,如果不设置的话使用默认的包名;它的作用就是用来区分栈Task的,即如果A原创 2017-06-06 18:27:34 · 600 阅读 · 0 评论 -
Android studio lib工程 笔记
Android studio lib工程开发记录原创 2017-05-25 10:14:06 · 252 阅读 · 0 评论 -
Android Camera2 学习笔记
Camera2 在Android5.0都已经出来了,现在的项目上竟然还在用已经被舍弃的Camera1,不能容忍了,改!1、使用感受:目前按照google给出的实例,写出来了一个demo,和Camera1最大的区别可能是 a:以服务的形式使用,需要进行请求;b:需要以后台线程来处理,避免阻塞UI线程;其他的都是需要设置参数来控制,旋转,在surfaceView上显示等等;原创 2017-05-04 15:43:30 · 437 阅读 · 0 评论 -
Android 利用异常获取调用堆栈信息
当我们阅读别人的代码的时候,不知道调用的信息时可以通过主动抛出异常信息来获取调用堆栈信息,而且不影响程序的正常运行;原创 2017-05-12 09:27:50 · 6889 阅读 · 0 评论 -
Android 防止你的Activity 不能被销毁
为了提高你的应用内存的正确使用,一定要避免Activity不被销毁,其中注意以下几个方面:1、不要把Activity对象以及Context对象传入到一个单例中,因为当单例不能被销毁时会一直不让Activity销毁;2、当Activity的内部类被单例所引用时,在Activity销毁时一定要解除绑定;3、AsyncTask在activity中使用时,当activity被销毁时,如果Asy原创 2017-04-29 15:08:01 · 5833 阅读 · 0 评论 -
Immutable bitmap crash error
不可以直接编辑bitmapBitmap workingBitmap = Bitmap.createBitmap(chosenFrame);//复制一份用来编辑Bitmap mutableBitmap = workingBitmap.copy(Bitmap.Config.ARGB_8888, true);Canvas canvas = new Canvas(mutableBitmap原创 2017-04-03 13:49:31 · 355 阅读 · 0 评论 -
setPreviewCallbackWithBuffer 只调用一次
在给camera设置mCamera.setPreviewCallbackWithBuffer(new PreviewCallback() { @Override public void onPreviewFrame(byte[] data, Camera camera) {原创 2017-04-02 10:02:07 · 2645 阅读 · 1 评论 -
Android Zip4J 使用笔记
Android zip4j 使用笔记原创 2017-07-20 20:23:38 · 1406 阅读 · 0 评论 -
Android 定时器 验证码获取显示
Android 获取验证码获取刷新显示!原创 2017-09-13 18:18:15 · 1056 阅读 · 0 评论 -
ListView setselection()不起作用
ListView setselection()不起作用原创 2017-10-18 23:11:27 · 608 阅读 · 0 评论 -
Java 对象中参数为hashMap转Json后 没有数据
如题,对象中的参数为hashMap时,使用Json工具转Json时,发现是空,原来是需要对该参数添加set和get方法才可以;原创 2019-03-25 17:57:38 · 1050 阅读 · 0 评论 -
Android Java代码执行adb shell命令(二) 执行命令
查找资料的时候发现有两种调用方式:第一种: try { process = processBuilder.start(); successResult = new BufferedReader(new InputStreamReader( process.getInputStr...原创 2019-03-21 13:49:02 · 11085 阅读 · 3 评论 -
Android Java代码执行adb shell命令(一) 误区
之前一直有几个误区就是 :1、能在adb shell中运行的命令都可以用Java代码来执行;2、只要是Root过的手机就一定能获取su权限;之所以称之为误区是因为在实际使用过程中发现了走不通的地方,也就是个人在目前还没有找到其他的方案来解决,如果有方案能解决非常欢迎告诉本人;误区一 能在adb shell中运行的命令都可以用Java代码来执行当把tcpdump 放入到/sy...原创 2019-03-21 09:59:08 · 6955 阅读 · 2 评论 -
GreenDao 使用记录
一、记录在项目中使用GreenDao的过程1、首先需要在整个项目的build.gradle文件中加入以下设置:buildscript { repositories { jcenter() mavenCentral() // 需要添加仓库 } dependencies { classpath 'com.android.t...原创 2018-12-17 14:12:57 · 331 阅读 · 0 评论 -
Robust 热更新使用记录
1、添加依赖a、在App的build.gradle,加入如下依赖apply plugin: 'com.android.application'//制作补丁时将这个打开,auto-patch-plugin紧跟着com.android.application//apply plugin: 'auto-patch-plugin'apply plugin: 'robust' com...原创 2018-11-12 17:15:54 · 1163 阅读 · 0 评论 -
Android热更新框架简单比较
1、TinkerTinker 的方案,都是让 Classloader 去加载新的类。如果不重启,原来的类还在虚拟机中,就无法加载新类。因此,只有在下次重启的时候,在还没走到业务逻辑之前抢先加载补丁中的新类,这样后续访问这个类时,就会 Resolve 为新的类。从而达到热修复的目的。Tinker 开发团队人员自研了 DexDiff 算法。 BsDiff 加载 so 和部分资源文件,DexDi...原创 2018-11-13 11:35:34 · 6914 阅读 · 1 评论 -
Android webView 中使用loadData出现乱码的解决方案 WebView.goBack() 出现空白页面
首先并非全部的手机都出现乱码,试了下小米一加是正常的,oppo vivo是乱码;最初使用的是mWebView.loadDataWithBaseURL(null, html, "text/html", "utf-8", null);没有出现乱码,但是当点击其中的链接再调用webview的goback()方法,返回的时候将会出现空白页;当使用了mWebView.loadData()方法之后不出现空白了...原创 2018-06-13 20:18:12 · 1015 阅读 · 1 评论 -
音视频笔记(二) 音频硬编码流程
流程大致分为三部分:1、获取从麦克风得到的pcm数据;2、对拿到的pcm数据进行硬编码;3、把编码后的数据进行处理;一、获取从麦克风得到的pcm数据1、使用AudioRecord 进行音频数据获取时,初始化AudioRecord之后,调用startRecording()方法进行开始录音; /** * 第一步初始化音频采集 */ public void ini...原创 2018-03-30 15:03:23 · 1371 阅读 · 0 评论 -
音视频笔记(一) 基础知识
音频:1、采样率:每秒钟采样多少次,一般44.1Mzh,即每秒采样44100次;2、量化(深度):用多大的容量来存放每个采样的数据;一般可以为16bit;3、声道:4、比特率:每秒钟存储数据的容量大小;44100*16*2表示的就是44.1Mzh采样率,16bit的量化,采用2声道来录音;5、音频编码:音频编码就是对得到的音频原始数据进行按照一定格式进行压缩处理,有损压缩和无损压缩;常用的格式有W...原创 2018-03-20 14:38:45 · 1120 阅读 · 0 评论 -
Android 获取CPU 单核与多核 信息
1、获取cpu信息其实是一个很简单的问题,最关键的一点是多核的问题;Android 中cpu信息要从 /sys/devices/system/cpu 下面获取;可以通过adb shell看到有CPU0,CPU1,CPU2,CPU3总共这四个CPU;网上一般的教程都是通过获取CPU0的最大频率和当前频率,例如:/sys/devices/system/cpu/cpu0/cpufre原创 2017-10-13 23:38:18 · 2552 阅读 · 0 评论 -
EditText 去除焦点 避免软键盘打开
EditText 去除焦点 避免软键盘打开原创 2017-10-13 23:33:26 · 1202 阅读 · 0 评论 -
E/MediaRecorder: start failed: -38
E/MediaRecorder: start failed: -38原创 2017-04-08 15:29:07 · 3127 阅读 · 0 评论 -
android 录屏报错:Failure delivering result ResultInfo{who=null, request=101, result=-1
Android MediaRecorder 录屏 Failure delivering result ResultInfo原创 2017-03-27 17:27:01 · 9836 阅读 · 2 评论 -
httpclient 学习备忘
/设置连接超时时间Integer CONNECTION_TIMEOUT = 2 * 1000; //设置请求超时2秒钟 Integer SO_TIMEOUT = 2 * 1000; //设置等待数据超时时间2秒钟原创 2016-03-10 17:48:22 · 303 阅读 · 0 评论 -
ConnectionPoolTimeoutException 异常
最初看到这个异常的时候以为是设置的超时时间短的原因,但是后来发现不仅仅是和设置的时间有关系,因为我是开启了4个线程来上传图片,每次都是有两个正常两个不正常,后来通过查资料才发现原来默认最大连接数是2个!所以要避免这个异常就需要1、加大超时时间;// 从连接池中取连接超时时间 ConnManagerParams.setTimeout(params, 5000);2、加大原创 2016-01-11 18:50:52 · 3587 阅读 · 0 评论 -
AsyncTask 的参数
一直以来都是new Thread ,new Runnable,没有怎么用到AsyncTask,今天突然用起来竟然不会用了,所以必须赶紧记下来!一直没有注意到 new AsyncTask这个里面的三个参数是什么意思,今天查了下资料才发现原来是对应它本身的三个方法!1、doInBackground(Params...);2、onProgressUpdate(Progress原创 2016-01-11 19:24:23 · 487 阅读 · 0 评论 -
No enclosing instance of type X is accessible. Must qualify the allocation with an enclosing instanc
No enclosing instance of type X is accessible. Must qualify the allocation with an enclosing instance of type X(e.g. x.new A() where x is an instance of X)写代码时一直包这个错误,也没有在意,第一次查了下资料找到原因了,就算了!可后面有出现原创 2016-01-11 19:12:23 · 749 阅读 · 0 评论 -
Android APP 获取crash异常信息
今天能写这个对我来讲有点晚,但也不晚;晚的是做android开发已经四年了,才注意到这个现象,才会这个知识点确实很晚;不晚的是,学习东西不怕晚,就怕不学;其实Crash异常并不害怕,因为它很好解决,关键是用户在使用的过程中出现Crash给用户很坏的体验,给人一种很low的感觉!捕获异常也不难主要有以下几个步骤:1、写一个类实现Thread.UncaughtExceptionHandle原创 2016-01-08 14:37:10 · 1455 阅读 · 0 评论 -
Android 中对任务设置超时
最近项目上有个需求,就是感觉在网络不好的情况下上传图片的时间太长,想对这个操作进行一个时间的限制!找了很近没有发现有特别简单的方法,最后发现了两个以前没有用过的东西:callable和future;关于callable和future的使用方法这里就不做很详细的介绍了,网上很多,我这里主要想把自己的思路写下来,一来做个记录,二来给大家一个启示! FutureTask upImageFutu原创 2015-12-15 17:24:15 · 2879 阅读 · 0 评论 -
Android 项目 eclipse 修改包名
这里修改包名不仅仅是src 源码包名,还要包括项目的名称以及进程的名字!这里正好项目中使用到,这里进行一次记录!刚开始使用Android Tools->Rename Application Package这个没有成功,所以自己手动修改了!前提:拷贝一份要修改的项目,是拷贝哦,不要直接在原项目上修改!步骤一:修改文件.project中的项目名 NewProject;修改完了之后你再导入到原创 2015-11-06 11:44:07 · 1033 阅读 · 0 评论 -
Android listpreference 使用笔记
最近在写setting 模块的东西,用到了这个东西,突然发现它并不是像我想想的那么简单,或许是因为不太了解它的缘故吧!实例代码如下:<ListPreference android:dialogTitle="@string/comment_number_title" android:entries="@array/comment_number_preference原创 2015-10-16 11:30:43 · 1074 阅读 · 0 评论 -
Android 5.0以上除去标题栏
Android5.0以上不能够直接通过在AndroidManifest.xml配置文件中为对应的Activity设置android:theme="@android:style/Theme.Light.NoTitleBar.Fullscreen"去除标题栏;如果通过在代码中onCreate()方法中设置requestWindowFeature(Window.FEATURE_NO_TITLE),在设置原创 2015-09-09 11:01:26 · 2535 阅读 · 0 评论 -
Android FTP ftpClient.listFiles()报java.lang.ClassNotFoundException: Didn't find class "Windows_NT"
最近项目上要用到ftp上传功能,就自己在window上搭了个FTP服务器,结果在获取ftp文件列表的时候卡住了,一直在报错:java.lang.ClassNotFoundException: Didn't find class "Windows_NT" on path: DexPathList[[zip file "/data/app/com.ftp-2/base.apk"],nativeLi原创 2015-09-08 10:54:03 · 1977 阅读 · 1 评论 -
Android 主界面长按创建快捷方式
Android中创建快捷方式主要有两种方式,一是在代码中直接添加生成桌面快捷方式的代码;二是通过小部件添加;这篇文章主要讲第二种方法!1、通过在AndroidManifest文件中为Activity添加 添加之后,长按桌面,小部件中会有你应用的图标出现!这才完成了第一步!2原创 2015-07-22 11:32:25 · 1674 阅读 · 0 评论