![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Android
邓志国
这个作者很懒,什么都没留下…
展开
-
通过ADB控制多台Android设备
在PC上可以通过adb命令控制多台android设备,但国内有些厂商,由于某种原因,设备的ID都是一样的。比如你同时插入2台设备,他们ID都是123456,那么对后面的ADB命令,就无法区分操作哪个设备了,我的解决办法是:修改adb源码。安装Ubuntu系统,按照Google教程下载Android源码,找到adb代码,在得到DeviceID的部分,将DeviceID后面加上一个系统的顺序号,来原创 2014-02-14 11:49:06 · 5257 阅读 · 0 评论 -
在Android上用MVP模式编程的实践
首先,谁是V?谁是P?(M我认为不是问题)View,应该是实现显示逻辑,在Android开发中,我们认为Fragment、Activity都可以被当做View,他们主要任务就是控制显示逻辑,这部分代码不太经常重用。View通过调用P的业务逻辑,来实现业务。业务包括同步的业务(可以在UI线程操作)和异步的任务(如网络、磁盘IO等耗时操作),并根据P的业务返回结果来响应地改变UI。对Presenter的原创 2015-04-07 19:48:11 · 847 阅读 · 0 评论 -
巧用Logcat把日志记录到文件
在一些开发阶段,产品已经小部分分发出去,在出现问题的时候,我们希望用户能把当时的Logcat日志也发过来提供给程序员进行分析,这里介绍一个巧妙利用logcat命令行进行日志记录的方法,不用自己写日志记录的代码。Android的shell里面提供个logcat的命令,是用来查看系统日志的,这个命令同时支持日志过滤、日志记录到文件,并支持自动日志文件滚动、控制日志文件大小。因此,我们在系统启动的时候,用原创 2015-02-25 17:34:19 · 2227 阅读 · 0 评论 -
一个高效的Android GIF播放器
特点:整个应用只用一个线程播放所有GIF可以把GIF直接放到ListView或者RecycleView中,性能没有问题。当没有GIF播放的时候,线程wait住GitHub地址 https://github.com/bobdeng/androidgif原创 2015-01-05 20:44:15 · 1221 阅读 · 0 评论 -
使用ANT编译超过64K方法的Android工程
Android编译的DEX文件最大允许64K个Method,超过了可以用multi-dex来实现,不过Google不维护Ant部分的代码了,需要自己手工改一下。1、修改SDK\tools\ant\build.xml 在dex-helper 下面的dex,增加:multidex="true" 由于当前的AntTask并不支持Multidex,因此需要修改ANT的T原创 2014-12-02 15:25:16 · 2857 阅读 · 5 评论 -
用AndroidAnnotation简化Android开发
AndroidAnnotation是一个通过Annotation对代码进行预处理,简化Android开发,加快开发速度,提高代码可阅读性的一个框架。它的主要思路是:用编译时Annotation对代码进行标记,通过Java的Annotation Processing对代码进行预处理,补齐代码。如FindViewById这样重复被使用的代码,可以通过在类成员上加上@ViewById(R.id.xxx)原创 2015-01-05 15:13:33 · 725 阅读 · 0 评论 -
Android使用Buffer提高相机的处理能力
Android上使用相机的的Preview的时候,如果不使用Buffer,相机程序会反复创建销毁Byte数组,造成系统频繁垃圾回收,非常影响体验,这时可以用Buffer来进行处理。首先,在调用相机的回调时,用如下代码:for (int i = 0; i < 3; i++) { camera.addCallbackBuffer(new byte[((previewWidth * pr原创 2015-01-05 15:02:46 · 1069 阅读 · 0 评论 -
基于AndroidAnnotations的一个MVP模式的扩展
GitHub地址原创 2015-02-10 16:08:46 · 886 阅读 · 0 评论 -
Android上如何确保消息被推送到
一般情况下,可以侦听一些经常发生的消息,如电量变化、开关屏幕、网络切换等等,注册BroadcastReceiver来接收消息,接收到后启动推送消息的Service。现在有些厂商的ROM,一旦用户主动杀掉了进程,则不再投送广播消息给应用,导致应用无法启动,在这种情况下,可以用C Fork出来一个进程,检查主进程是否被杀,一旦被杀,立即调用shell命令启动Service,这个做法稍微流氓了一点,原创 2015-01-05 14:46:28 · 763 阅读 · 0 评论 -
Activity被销毁重建后Fragment的处理
1、用onSaveInstanceState方法保留Activity状态。2、在onCreate方法里面处理保留的状态数据protectedvoidonCreate(BundlesavedInstanceState) {3、在放入Fragment的时候,加上TAG,在Activity restore后,用TAG把Fragment用findFragmentByTag读取出来。原创 2015-01-20 16:57:26 · 2624 阅读 · 1 评论 -
扩展AndroidAnnotations使用MVP模式编程
上代码 Activity实现一组接口,用来对View进行操作public class MainActivity extends Activity implements TestView{//MVP中的P,一个View可以有多个P,实现多组业务逻辑,比如在主界面还需要读取Conversation 的内容@Bean(TestActions.class)ITestActions testActio原创 2015-02-05 21:15:00 · 1096 阅读 · 1 评论 -
用Ant在编译时删除Debug代码
程序中有很多打印Log的测试代码,在Deploy的时候最好删除,Java不支持宏定义,可以尝试用ANT脚本来做。步骤如下:1、把代码复制到一个新目录2、用Ant的replaceregexp任务,对下面的Java代码根据正则表达式删除Debug代码3、用ANT对清理过的工程进行编译打包。需要程序员对Debug信息的输出统一格式,比如统一一个静态方法调用。原创 2015-01-13 22:31:06 · 1071 阅读 · 1 评论 -
Android ListView避免在GetView时数据发生变化导致找不到元素的Bug
ListView在GetCount返回30,这时系统正在GetView,另外的线程这时改变了List中的数据,比如删除一个,会导致indexOutOfBound。解决方案是:在getCount的时候,把数据复制到另外一个List中,之后的getView都从这个复制的List获取数据。原创 2015-01-13 22:27:59 · 833 阅读 · 0 评论 -
Android对第三方类库运行时加载
首先,把需要运行时加载的类库,放到项目的其他目录,如新建一个thirdlibs的目录。然后用dx命令,对下面的类库进行压缩,做成dex文件。dx --dex --output=../assets/ *.jar这会在assets下面生成一个classes.dex文件,压缩成classes.zip文件。新建一个类,用来加载类库package me.chatgame.mobilecg;原创 2014-12-02 20:39:28 · 3650 阅读 · 2 评论 -
Android下面第三方类库资源文件的加载
有些第三方类库是基于J2SE开发的,内部有资源文件,如properties,这些文件在dex编译的时候会被过滤掉,导致类读取资源的时候无法访问。解决办法是用运行时加载第三方类库。1、用DX打包第三方类库2、把打包后的DEX文件和带目录结构的资源文件,压缩到classes.zip文件里面3、对Classes.zip进行运行时加载。加载方法见上一个博客原创 2014-12-03 12:41:44 · 1137 阅读 · 0 评论 -
Android更新系统相册
图片保存到SD卡后,通过如下方式通知系统更新相册: Intent mediaScanIntent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE); File f = new File(path); Uri contentUri = Uri.fromFile(f); mediaScanIntent.s原创 2014-11-12 22:47:30 · 986 阅读 · 0 评论 -
基于AndroidAnnotation扩展的一个异步调用框架
用法介绍首先 @EAction(action=ActionImpl.class) public interface IAction{ @Invoke public void doSomething(String name); @Invoke public void doSomethingPriority(String name,int priority);原创 2014-09-04 14:54:48 · 645 阅读 · 0 评论 -
并发安全的Adapter
问题Adapter的数据自己要用于getView和getCount,而且程序是getCount后在不同方法里面连续getView,这带来个问题:getCount后,数据被其他线程删除,在getView的时候越界解决思路建立一个ConcurrentAdapter,里面用两个List存储数据,一个是外部操作增删用,一个用来实际绘制用。当外部增删后,暂时不改变内部的List,这样就不会出现越界当内部原创 2015-04-07 19:54:06 · 780 阅读 · 0 评论