
Android
文章平均质量分 73
Sodino
还是自己的窝舒服,跳转至 http://sodino.com 吧。
展开
-
【Android】React-Native为Fresco的初始化提供自定义的Configuration
Sodino React-Native界面在启动时会调用Fresco的初始化,即如果Fresco已经初始化过了,也会再重新执行初始化过程一次。具体调用栈如下:这会导致原先的Fresco初始化的配置全部失效,比如缓存大小被改变图片可能过早被清除,失去自定义的NetworkFetcher导致图片下载失败(如果NetworkFetcher涉及添加自定义头信息的话)。该问题在"react-native":原创 2017-04-01 09:34:01 · 3222 阅读 · 0 评论 -
[MAT]使用MAT比较多个heap dump文件
使用MAT比较多个heap dump文件 调试内存泄露时,有时候适时比较2个或多个heap dump文件是很有用的。这时需要生成多个单独的HPROF文件。下面是一些关于如何在MAT里比较多个heap dumps的内容(有一点复杂):1. 第一个HPROF 文件(usingFile > Open Heap Dump ).2. 打开Histogram view.图1. Histogra原创 2014-08-12 11:39:39 · 12295 阅读 · 1 评论 -
[Android]生成heap dump文件(.hprof)
Android生成heap dump文件(.hprof)一个heap dump就是一个程序heap的快照,可以获知程序的哪些部分正在使用大部分的内存。它保存为一种叫做HPROF的二进制格式。对于Android执行android.os.Debug.dumpHprofData(hprofPath)方法后所生成的文件,需要把.hprof文件从Dalvik格式转换成J2SE HPROF格式。使用Andro原创 2014-08-12 11:09:40 · 24666 阅读 · 1 评论 -
[Java] 监控java对象回收的原理与实现
监控Java对象回收的原理与实现 一.监控Java对象回收的目的监控Java对象是否回收的目的是:为了实现内存泄露报警。 内存泄露是指程序中对象生命周期(点击查看详情)已经进入不可见阶段,但由于编码错误或系统原因,仍然存在着GC roots持有或间接持有该对象的引用,导致该对象的生命周期无法继续向下流转,也就无法释放的现象。简单的来说即是:已实例化的对象长期被持有且无法释放或不能按照对象正常的生命原创 2014-08-06 22:12:58 · 14455 阅读 · 3 评论 -
[Coder要有情商] “XXshenqi”安卓短信蠕虫病毒分析
6.一个Coder的感想 媒体将这种简单的恶意程序称之为“超级病毒”并广而告之,一方面表现了媒体的无知,另一方面,媒体的宣传力度越大,这个年轻的大一学生罪责就越陷得深,满满的让人觉得媒体在报道这件事情上真是够让人恶心的!转载 2014-08-04 14:36:53 · 2115 阅读 · 0 评论 -
[Android][Memory Leak] InputMethodManager内存泄露现象及解决
[Android][Memory Leak]InputMethodManager内存泄露现象及解决现象: 在特定的机型天语k_touch_v9机型上,某个界面上出现InputMethodManager持有一Activity,导致该Activity无法回收.如果该Activity再次被打开,则旧的会释放掉,但新打开的会被继续持有无法释放回收.MAT显示Path to gc原创 2014-06-18 22:54:10 · 34012 阅读 · 19 评论 -
[Android] 文件夹下文件的个数限制
Android机子的文件夹下有存放文件的个数限制,做了下测试,如下:在创建第65534个文件时抛出了异常: java.io.IOException: open failed: ENOSPC (No space left on device) at java.io.File.createNewFile(File.java:940) at lab.sodino.filenumberte原创 2013-09-12 21:01:35 · 14905 阅读 · 3 评论 -
[Android] 字体使用dp单位避免设置系统字体大小对排版的影响
[Android] 字体使用dp单位避免设置系统字体大小对排版的影响 以魄族mx3为例,在设置->显示->字体大小中可以选择字号大小如下图:图1. 魄族mx3会导致软件在有固定定高的界面中”已关联”显示不完全。如下图。图2. 字体显示不完全 解决此总是为把TextView中的字体大小的单位由sp改为dp即可。 此例子展示原创 2014-04-26 16:30:34 · 11468 阅读 · 2 评论 -
[Android]内存泄露排查实战手记
内存泄露排查实战手记Time:2013.09.02Author:sodino问题现象:这里内存泄露是指已实例化的对象长期被hold住且无法释放或不能按照对象正常的生命周期进行释放。问题期望:进行多次重复操作后,能够正常回收该对象(JobAppInterface)。期望在切换帐号后,之前的JobAppInterface能够及时回收(允许等待一段时间后再回收)。问题排查:原创 2013-12-23 20:42:16 · 4347 阅读 · 0 评论 -
[Android]startActivityForResult启动singleTask的Activity,则onActivitResult()立即回调且resultCode为RESULT_CANCEL
问题现象: 在刚安装完demo应用未登录任何帐号时,通过系统内的分享功能想将文件/图片等内容"发送给好友"或"发送到我的电脑",触发登录界面,但登录成功后,没有跳转到选择demo好友发送界面,无法继续发送。 代码分析: demo中JumpActivity处理着各种外部应用分享入口,通过调试发现进行分享时会判断是否登录过,如果未登录则原创 2014-03-25 21:40:09 · 17259 阅读 · 11 评论 -
[Android] 获取WebView的页面标题(Title)-----WebChromeClient.onReceivedTitle()方法的重写
应用开发中需要获取WebView当前页面的标题,可能通过对WebChromeClient.onReceivedTitle()方法的重写来实现效果图如下:代码如下:public class MainActivity extends Activity { public void onCreate(Bundle savedInstanceState) { super.onCre原创 2013-12-28 18:07:55 · 61591 阅读 · 7 评论 -
[Android] 更改关联的源码路径
右击选中工程 → Java Build Path → Libraries → Android 4.1.2 → 点开android.jar → 选中Source attachment → Edit,即可更改。见下图。原创 2013-12-13 10:22:29 · 3351 阅读 · 1 评论 -
[Android] 停止、恢复 背景音乐的播放
在执行录音操作时,我们希望可以将酷狗等后台播放的音乐停掉,在录音完成后再恢复播放,可以使用以下代码: /**@param bMute 值为true时为关闭背景音乐。*/ @TargetApi(Build.VERSION_CODES.FROYO) public static boolean muteAudioFocus(Context context, boolean bMute) {原创 2013-08-19 00:12:53 · 12381 阅读 · 3 评论 -
[ANT] Ant脚本封装ndk-build命令并执行打包启动
本篇文章为示范如何在Eclipse中开始一个Jni工程的操作步骤,并假设读者初步了解JNI具体规范及使用ANT脚本。(话说这样的初学者不多见吧…其实我只是想给自己写个总结而已) 阅读本文之前,请确保你的开发环境已经满足如下配置:1. 设置好了Android Sdk及Ndk环境变量。NDK的安装建议使用MinGW,只要能在命令行中正常运行make gcc程序即是成功了。并在Eclipse原创 2014-09-24 19:04:20 · 8747 阅读 · 0 评论 -
[Android Studio][NDK]Execution failed for task ':app:compileDebugNdk'. Error Code:2
Execution failed for task ':app:compileDebugNdk'.> com.android.ide.common.internal.LoggedErrorException: Failed to run command: C:\Users\sodinochen\AppData\Local\Android\ndk-r10b\ndk-build.cmd NDK_PRO原创 2014-12-12 16:06:44 · 51241 阅读 · 9 评论 -
【Android】透明状态栏在App中的实现与接口设计
Sodino 文章目录1. 认识透明状态栏2. 透明状态栏Api及特性3. 设置透明状态栏4. 处理消失的系统状态栏区域5. fitsSystemWindows6. Activity中的接口设计7. Fragment中的接口设计8. 白色Titlebar的处理9. React-Native的处理10. 小米 与 魅族 与 (莫名其妙的)华为11. 腾讯优测UTestGitHub源码:Transpa原创 2017-01-20 18:57:14 · 3370 阅读 · 1 评论 -
【Android】方法数查看工具---DexCount
方便快捷好用、简单明了。官方链接:dexcount-gradle-plugin效果图:使用方法:修改 app/build.gradle,添加dexcount依赖:123456789101112buildscript { repositories { mavenCentral() // or jcenter() } dependencies {原创 2017-02-22 11:41:16 · 6471 阅读 · 1 评论 -
【Android】Retrofit 的一些笔记
Sodino 文章目录1. 前言2. Header的统一处理3. 访问绝对路径4. Map的使用避免声明冗余的类5. RequestBody为String 及 文件上传6. 后台Json空数据规范7. 空数据Void声明8. ResponseBody为String9. ResponseBody的多次读取10. 统一的错误处理Retrofit :A type-safe HTTP client for原创 2017-02-22 11:40:36 · 1591 阅读 · 0 评论 -
【Android】Ripple使用总结及ClickableSpan的冲突解决
GitHub源码:Ripple DemoRippleDrawable官方文档链接:RippleDrawable效果图如下:Ripple效果的设置可以在XML布局文件中对 View 的 android:background 属性进行赋值.android:foreground 的Ripple支持仅支持 FrameLayout 或其子类如support-v7中的 CardView.android:for原创 2016-12-28 16:50:30 · 4039 阅读 · 0 评论 -
【Android】记录Android MediaPlayer的两个bug
SodinoCDN资源设置了防盗链功能,Android客户端这边需要在访问资源时设置约定好的头信息。一开始是希望使用通用头Referer,但对于MediaPlayer的话,在 android 4.X 机型上设置Referer是无效果的….该Bug在android 5.0才恢复。见下图:参考链接:Nexus 5 referer string value is coming as null even原创 2016-09-01 19:50:39 · 2473 阅读 · 0 评论 -
【Android】Gadle改变应用名称(appName)的两种方法
Sodino1. 应用场景2. 方法一:设置manifestPlaceholders3. 方法二:定义resValue4. 两者比较5. 后记应用场景App在debug/release编译环境下,想通过改变appName来给予区分。productFlavors增加各种编译参数时,比如更换applicationId包名,appName也需要跟着变动。方法一:设置manifestPlaceholder原创 2016-09-01 18:21:03 · 14509 阅读 · 3 评论 -
【AndroidStudio】解决 Unable to delete dirctory '<project_folder>\build\outputs\apk'
在Windows机器上,使用AndroidStudio执行Build或Clean时经常出现12Error:Execution failed for task ':app:clean'.> Unable to delete directory: D:\EApp\android01\EApp\build\outputs\apk自己手工想去删除也删不了,只能用杀毒工具的粉碎机,好烦。一翻求索之下,找到了原创 2016-08-30 14:15:21 · 4603 阅读 · 1 评论 -
【Android Studio】jacoco导致cannot find local variable
刚进项目断点调试时一直出现”Cannot find local variable”,如下图:你妹呀!!都不能愉快的撸代码了…抽空一排查,发现是”jacoco”的代码覆盖率影响的,删除下图的testCoverageEnabled true配置即可。口水笔记…======================================排查思路:开发环境问题?是Android Studio?还是JDK?原创 2015-10-29 18:41:20 · 12103 阅读 · 2 评论 -
【Proguard】Proguard混淆时保留行号信息
混淆工程如果不保留行号,则查起Crash时,一一对照mapping文件是非常麻烦的,而且由于java的全名规范,只要方法的参数不一致,即可方法名相同,在这种情况下,更难准确定位出错的方法及具体的代码。如下图,同一个类中被混淆后有三个名字为 a 的方法:解决办法为:混淆时保留行号;具体操作是在工程的proguard-project.txt中添加如下配置:1234# 将.class信息中的类名重新定义原创 2015-10-29 15:21:12 · 5427 阅读 · 2 评论 -
[Android] 'WebView-- Caught a crash, signum=11'的解决
碰到一个奇怪的问题: WebView在显示本地的一个h5页面时,在Mi 2S可显示,页面上同样属性的按钮有两个可点击,但第三个按钮点击导致Activity必定出现崩溃。崩溃无详细日志,只有如下两句线索: // W/crash_handler(19125): Caught a crash, signum=11 // 14594-14594/com.eln.ba原创 2015-10-29 11:54:55 · 3610 阅读 · 0 评论 -
[Android] animated-rotate简单的转菊花...
一个转菊花的效果,如下图:原本使用的是animation-list,使用了12张图片:<animation-list xmlns:android="http://schemas.android.com/apk/res/android" android:oneshot="false"> 现使用animate原创 2013-09-08 17:32:50 · 22783 阅读 · 5 评论 -
Android Studio开发JNI工程
使用Android Sutdio创建一个新的工程后,接下来记录创建NDK工程的基本步骤。本文将达到:1. 创建NDK工程2. 在JNI中输出Log语句3. 指定编译的so库的abi版本4. 解决在创建NDK工程中的问题Step: 1. 添加native接口注意写好native接口和System.loadLibrary()即可了,并无特别之处。P.S:onCreate()中对R.id.txt执行se原创 2014-12-15 18:49:21 · 114740 阅读 · 44 评论 -
[移动网关]解决3gwap联网失败:联网请求在设置代理与直连两种方式的切换
[Android]解决3gwap联网失败:联网请求在设置代理与直连两种方式的切换问题现象:碰到一个问题,UI交互表现为:联通号码在3gwap网络环境下资源一直无法下载成功。查看Log日志,打印出的信息为:ConnectTimeoutException: Connect to /10.0.0.172:80 timed out则问题原因是:在使用了移动网关代理后出现超时,仍无法正确原创 2013-08-27 17:45:45 · 7630 阅读 · 1 评论 -
[Android] 直接获取组件的宽高:Activity.onWindowFocusChanged()
由lily同学提示的这个知识点,献花献花..onWindowFocusChanged():当Activity的当前Window获得或失去焦点时会被回调此方法。当回调了这个方法时表示Activity是完全对用户可见的。当对话框弹起/消失及Activity新创建及回退等都会调用此方法。相比之下,onResume()方法更多的是指Activity进入了可见的状态,但只是状态,并不是真正的原创 2013-08-19 21:59:58 · 6341 阅读 · 0 评论 -
[Android]开启、关闭GPS/Wifi/Bluetooth/Sync,调节屏幕亮度
代码出处:http://www.learningandroid.net/blog/advance/programmable-toggle-gps/自己实现了一下,确实可行。不足之处是无法监控设置过程中的状态,设置后的最后结果。package lab.sodino.togglegps;import java.lang.reflect.InvocationTargetE原创 2012-01-20 11:22:39 · 3997 阅读 · 2 评论 -
[Android]左右滑屏的实现
先上效果图:实现“左右滑屏”核心类是Scroller,将View中的内容左右滚动从而实现滑屏效果。关键方法有:scroller.scrollTo(x,y):直接将View中的内容滚动到指定的(x,y)位置。scroller.scrollTo(dx,dy):直接将View中的内容滚动到相对当前状态的(dx,dy)位置。本例中用于实现手指拖拉移动View的效果。原创 2012-01-19 16:14:32 · 5731 阅读 · 8 评论 -
[Android] View scrollTo()与scrollBy()
共同点:两者都只是移动View里的内容,非移动View本身。当移出View的范围时,将会被遮住不可见。值为正数表示向左移动或向上移动,值为负数为向右移动或向下移动。不同点:scrollTo(int x,int y):滚动到定点位置scrollBy(int x,int y):滚动到相对位置原创 2012-01-17 11:03:55 · 3608 阅读 · 0 评论 -
[Android]搜索工具条
直接给效果图:由效果图,搜索工具条具备的功能有:1.实现语音识别,获取关键字2.EditText有文字输入时,应在该组件末尾显示文件删除按钮,即X符号。3.EditText与其右边的搜索按钮无缝衔接。并不是所有的手机都支持语音识别的,所有在启动语音识别之前,应该先进行判断。综合代码如下: /** * Fire an intent to start原创 2011-10-19 23:31:59 · 4024 阅读 · 2 评论 -
[Android]android.graphics.Camera实现图像的旋转、缩放,配合Matrix实现图像的倾斜
android.graphics.Camera可以对图像执行一些比较复杂的操作,诸如旋转与绽放,与Matrix可实现图像的倾斜。个人总结Camera与Matrix的一些区别如下:Camera的rotate()相关方法是指定某一维度上旋转指定的角度。Matrix的r原创 2011-09-26 18:22:14 · 10594 阅读 · 5 评论 -
[Android]倒影效果的ImagView
本文源自:http://blog.youkuaiyun.com/kenshintang1215/article/details/5804236效果图如下:代码如下:package lab.sodino.reflection;原创 2011-09-21 14:31:07 · 6470 阅读 · 0 评论 -
[Android]中国大部分城市地区的结构定义与按拼音排序
项目中涉及到送货地址,录入工作量挺耗时的,分享出来,减免大家的重复劳动。先见效果图如下: 本示例中使用Hashtable记录了中国大部分城市与地区的数据。其结构如下:Hashtable(Head) ↑原创 2011-09-01 15:37:08 · 18013 阅读 · 6 评论 -
[Android]为指定的应用创建桌面快捷方式
网上一搜一大把为自己的应用创建快捷方式,但是本文的侧重点在为“指定的应用”创建桌面快捷方式。 常见的桌面快捷方式有两要素:1.应用名 2.应用图标。 指定应用图标的信息是: // pkgContext为指定应用的上下文环境,iconIdentifier为一个整数,指定原创 2011-07-22 00:01:18 · 4209 阅读 · 2 评论 -
[Android]应用语言切换的三种方法
Android对国际化与多语言切换已经做得不错了,一个应用只要命名相应语系的values-[language]文件夹,通过“设置”→“语言&键盘”→“选择语言”即可实现应用多种语言的切换。 但如何在应用里自己实现?搜索过发现网上有如下的做法: Res原创 2011-07-11 00:27:45 · 74278 阅读 · 31 评论 -
[Android]网络资源下载时断点续传的实现
断点续传用到的知识点:1.使用RandomAccessFile设定文件大小并于指定位置开始读数据[randomAccessFile.seek(position)]。 2.请求资源链接时指定所请求数据的返回范围。 httpURLConnection.setRequestProperty("Range", "bytes=" + start + "-" + (contentLen原创 2011-06-09 23:13:00 · 9791 阅读 · 6 评论 -
[Android]APK程序卸载二次确认的实现
<br />严正声明<br /><br /> 本人本着技术开放,思想分享的目的,撰写本文。文章仅供参考之用,请勿使之于非法或有害于社会和谐之用。<br />Sodino<br />2011-01-24<br /><br /> <br />Android上能不能实现卸载时提示呢,比如卸载某某软件时,做个用户调查卸载的原因。<br />我以前想着是的不行的,以前的想法是:<br />Windows上卸载时能实现此功能是因为有些程序的卸载是自己实现的,非系统操作。<br />但androi原创 2011-01-22 16:43:00 · 9280 阅读 · 20 评论