摘要: 最近遇到一个bug,当应用加了多进程后,比如总共进程数为N,会出现在`startService()`时`onStartCommand()`方法会被重复调用`(N-1)`次的奇怪现象。***## 祸起>最近遇到两个模块互不相干却受到影响的奇怪问题,一个push模块和一个DaemonProcess模块在... 阅读全文
posted @ 2015-07-14 22:59 ConquerMobileApp 阅读(3041) 评论(0) 推荐(0) 编辑
摘要: * 最近帮团队同事配置gradle时,发现一个非常奇怪的问题:> * 同样的gradle配置的项目,只是修改了一个项目的名称,竟然会出现以下奇怪问题:## 现象1. 一个编译完全OK,另外一个编译出现各种问题2. mac上两个都能正常编译,windows上其中一个编译通不过主要Error如下:```... 阅读全文
posted @ 2015-07-14 22:58 ConquerMobileApp 阅读(6059) 评论(0) 推荐(0) 编辑
摘要: ## 需求* 继续用`Eclipse`项目的结构,但是使用`gradle`编译,或者说任意的项目结构进行编译。## 解决方案1. Android studio的项目结构 1. Android Studio 整个项目是一个project 2. Project中有很多的module 3. module的... 阅读全文
posted @ 2015-07-14 22:57 ConquerMobileApp 阅读(348) 评论(0) 推荐(0) 编辑
摘要: 在知乎上看到一个问题作为病人怎样鉴别一个医生的能力?怎样选择合适的医生?于是有了这篇求医记,以下是答案。过于严肃,后续争取将其改为故事版。这个问题正是我最近心中疑惑不解的问题,在Google上搜索“如何鉴别好医生”,第一条就是知乎这个问题。关注这个问题的起因:今年4月份为了减肥和健身,和朋友狂打羽毛... 阅读全文
posted @ 2014-12-28 01:20 ConquerMobileApp 阅读(267) 评论(0) 推荐(0) 编辑
摘要: 在知乎上有朋友问Android 上能提高学习、工作效率的应用有哪些?我给他们的推荐获得了最多赞同。以后会不断完善更新此贴.Any.do:规划日程,各平台都有。Evernote:记笔记,各平台都有。OneNote:这个也不错,特别是文档功能很强大,微软有Office基因啊,但同步有点慢。。。Quora... 阅读全文
posted @ 2014-12-28 01:20 ConquerMobileApp 阅读(320) 评论(0) 推荐(0) 编辑
摘要: 前言在应用开发中会经常遇到要求实现夜间模式或者主题切换具体例子如下,我会先讲解第一种方法。夜间模式知乎网易新闻沪江开心词场Pocket主题切换腾讯QQ新浪微博我今天主要是详述第一种的实现方式:首先,应用的Application要继承自定义的Theme123456 其实AppTheme要实现日间和... 阅读全文
posted @ 2014-12-28 01:19 ConquerMobileApp 阅读(1265) 评论(0) 推荐(0) 编辑
摘要: 从去年(2013年5月)Google发布Android Studio 0.1.0版本,到如今已经一年多了,已经升级到0.8.6 Beta版 ,从刚开始大家报怨bug多,编译困难,到如今已经基本趋于稳定了,在这个过程中,我一直使用Android Studio,一年多的时间,团队里只有我一个人使用。1.... 阅读全文
posted @ 2014-12-28 01:17 ConquerMobileApp 阅读(421) 评论(0) 推荐(0) 编辑
摘要: 朱熹曰:“日省其身,有则改之,无则加勉。”孔子的学生曾子也经常主张:“吾日三省吾身”今天读了一些博客,对比最近博客很久未更新、github上也一直不见项目落地,着实烦躁、厌恶自己的懒惰、每天总是好像很忙的样子,工作和生活交织,这其实是自己给自己找的借口。所以今天就先反省下自己的行为。未达成的事件(触... 阅读全文
posted @ 2014-12-28 01:15 ConquerMobileApp 阅读(335) 评论(0) 推荐(0) 编辑
摘要: Fragment是activity的界面中的一部分或一种行为。你可以把多个Fragment们组合到一个activity中来创建一个多面界面并且你可以在多个activity中重用一个Fragment。你可以把Fragment认为模块化的一段activity,它具有自己的生命周期,接收它自己的事件,并可以在activity运行时被添加或删除。Fragment不能独立存在,它必须嵌入到activity中,而且Fragment的生命周期直接受所在的activity的影响。例如:当activity暂停时,它拥有的所有的Fragment们都暂停了,当activity销毁时,它拥有的所有Fragment们都 阅读全文
posted @ 2014-02-17 08:57 ConquerMobileApp 阅读(616) 评论(0) 推荐(0) 编辑
摘要: 下载以下资源:Cocos2d-x (http://www.cocos2d-x.org)Android NDK(http://developer.android.com/tools/sdk/ndk/index.html)配置环境变量(SDK NDK Cocos2d-x)新建Cocos2d-x项目:进入cocos2d下载后解压的目录执行如下命令:python create_project.py -project 项目名称 -package 项目包名 -language 语言上述命令一共3个参数(项目名称,项目包名,开发语言:cpp | js | lua)进入创建的项目中:cocos2d/proje 阅读全文
posted @ 2014-02-17 08:56 ConquerMobileApp 阅读(291) 评论(0) 推荐(0) 编辑
摘要: 今天打包时,发现2.3机器,产生的APK在某些机器上不能安装(Installation error:INSTALL_FAILED_DEXOPT),针对这个问题的一个可能解释是:最新的ADT和SDK Tool在将jar转化成dex的时候,可能会合并类的代码,这将导致巨大的类;类中的每一个方法都分配有一个id,字节码中以id标识和调用方法;早期的Dalvik VM内部使用short类型变量来标识方法的id,最大值限制在65535;综合上述因素,代码在安装的时候,不能通过验证,所以安装失败。 我们的项目因为代码里引入了过多的开源library,所以导致方法数过多,最后只能精简代码,删除不必要的... 阅读全文
posted @ 2014-02-12 20:33 ConquerMobileApp 阅读(5220) 评论(0) 推荐(0) 编辑
摘要: Android Open Source Projects 阅读全文
posted @ 2014-02-11 17:55 ConquerMobileApp 阅读(2511) 评论(0) 推荐(1) 编辑
摘要: 最近出现了一个让人抓狂的问题。 现在的项目中,制作了一个界面非常复杂。Fragment中嵌套下拉刷新的Listview 这样一个布局,在3.0以上的手机上都表现良好问题!但是在2.x的比较弱爆的手机上会出现 Android 2.3 I'm getting aStackOverflowError when the layout is drawn: atandroid.view.View.draw(View.java:6880) atandroid.view.ViewGroup.drawChild(ViewGroup.java:1646) atandroid.view.Vi... 阅读全文
posted @ 2014-01-27 11:22 ConquerMobileApp 阅读(712) 评论(0) 推荐(0) 编辑
摘要: 英文原文:Bongzimo 翻译:ImportNew-黄小非随着Android平台市场份额的持续猛增,越来越多的开发者开始投入Android应用程序的开发大潮。如果您是一位2013年刚刚入行的Android开发新兵,恭喜你,因为这个平台已经在过去几年里变得愈发成熟了,绝对值得住你全情投入。目前来看,Android现成的开发资源早已经汗牛充栋,我们这篇帖子,就是要在浩如烟海的资源中挑出最重要的那些,呈现给你。本帖对Android开发菜鸟和中级老兵同样适用,因为本帖重点列出了那些最常用的Android开发资源。推荐书籍你或许觉得,都2013年了,再去看个什么书来学习Android开发,这方法应该早 阅读全文
posted @ 2014-01-21 09:28 ConquerMobileApp 阅读(243) 评论(0) 推荐(0) 编辑
摘要: 在Android系统中,BroadcastReceiver的设计初衷就是从全局考虑的,可以方便应用程序和系统、应用程序之间、应用程序内的通信,所以对单个应用程序而言BroadcastReceiver是存在安全性问题的,相应问题及解决如下:1、当应用程序发送某个广播时系统会将发送的Intent与系统中所有注册的BroadcastReceiver的IntentFilter进行匹配,若匹配成功则执行相应的onReceive函数。可以通过类似sendBroadcast(Intent, String)的接口在发送广播时指定接收者必须具备的permission。或通过Intent.setPackage设置 阅读全文
posted @ 2014-01-16 09:01 ConquerMobileApp 阅读(438) 评论(0) 推荐(0) 编辑
摘要: 2.2以上的版本下载网络资源不完整无法更新。HttpURLConnection.getContentLength()获取的size跟下载下来的file的legth不等。原因是:HttpURLConnection跟服务交互采用了"gzip"压缩。所以下载的fileLegth >HttpURLConnection.getContentLength().参考api:By default, this implementation ofHttpURLConnectionrequests that servers use gzip compression. SincegetCon 阅读全文
posted @ 2014-01-02 11:04 ConquerMobileApp 阅读(645) 评论(0) 推荐(0) 编辑
摘要: 第一章:整洁的代码只做好一件事减少重复代码提高表达力提早构建简单抽象让营地比你来时更干净第二章:有意义的命名名副其实:如果名称需要注释来补充,就不算是名副其实。一定要注意命名,一旦发现更好的名字,替换他避免误导 比如不要用accountList,除非这真的是一个list,可以用accoutGroup等这个我以后要注意拼写前后规则要一致废话是一种没有意义的区分,比如:Product ProductInfo ProductData使用读得出来的名称,使用可搜索的名称类名要尽量用名词或名词短语,方法名应当是动词或动词短语全名要习惯相同,不要命名这种:controller manager driver 阅读全文
posted @ 2014-01-01 23:30 ConquerMobileApp 阅读(433) 评论(0) 推荐(0) 编辑
摘要: 转瞬之间,已经2014年了回首2013,发生了很多事,生活也发生了很大的变化,但总体来说,对自己的2013不甚满意,原因,一言以蔽之:自我感觉,进步太小,进步远远不够,一些目标也未达成,在平庸的生活中磨灭了激情,这是多么可怕的一件事情。在新的一年2014年能够做到以下几点:开发一款iOS的应用(要有一定难度)。在github上开源至少两个Project(至少包含iOS和Android)。至少看24本书,多读好书,多读好的技术书,以及其它学科的经典书。加强英语学习。从单词量、书写和口语的学习。加强减肥以及锻炼,要养成每周至少4次运动的习惯,体重减至68KG。每天一篇简单日记。坚持每天写博客一篇。 阅读全文
posted @ 2014-01-01 23:25 ConquerMobileApp 阅读(219) 评论(2) 推荐(0) 编辑
摘要: GitPull据我所知,当你使用gitpull时,它将会获取远程服务器(你请求的,无论什么分支)上的代码,并且立即合并到你的本地厂库,Pull是一个高等级的请求,默认会支持Fetch和merge的操作,如果不是为了使用上的方便,你可以完全不使用它。12345$gitcheckoutlocalbranch$gitpulloriginmaster$gitbranchmaster*localbranch上面的命令会将远程服务器上的master分支合并到localbranch中。GitFetchfetch和pull很相似,只是fetch不会做任何的合并操作。123456$gitcheckoutloca 阅读全文
posted @ 2013-10-31 09:23 ConquerMobileApp 阅读(8570) 评论(0) 推荐(0) 编辑
摘要: java.util.regex是一个用正则表达式所订制的模式来对字符串进行匹配工作的类库包。1.简介:java.util.regex是一个用正则表达式所订制的模式来对字符串进行匹配工作的类库包。它包括两个类:Pattern和Matcher 。Pattern: 一个Pattern是一个正则表达式经编译后的表现模式。Matcher: 一个Matcher对象是一个状态机器,它依据Pattern对象做为匹配模式对字符串展开匹配检查。首先一个Pattern实例订制了一个所用语法与PERL的类似的正则表达式经编译后的模式,然后一个Matcher实例在这个给定的Pattern实例的模式控制下进行字符串的匹配 阅读全文
posted @ 2013-08-07 06:59 ConquerMobileApp 阅读(344) 评论(0) 推荐(0) 编辑
摘要: private void readHtmlFormAssets(){ WebSettings webSettings = tipsWebView.getSettings(); webSettings.setLoadWithOverviewMode(true); webSettings.setUseWideViewPort(true); tipsWebView.setBackgroundColor(Color.TRANSPARENT); tipsWebView.loadUrl("file:///android_asset/html/about.html... 阅读全文
posted @ 2013-07-16 17:33 ConquerMobileApp 阅读(819) 评论(0) 推荐(0) 编辑
摘要: 1、下载tomcat 去官方网址:http://tomcat.apache.org/下载最新版2、下载解压后,自己可以随便放在哪个文件夹下,自己记得路径即可。比如Users/你的用户名/Documents/ 可重命名为 tomcat3、用终端terminal 进入到tomcat文件夹目录bin文件夹下,输入以下命令: sh startup.sh此时 tomcat服务就启动了 在浏览器中畭http://localhost:8080/就可以看到一个网页虚拟目录就是可以通过设置后使用浏览器在地址栏中输入:"http://localhost:8080/test"来访问存放在指定目录 阅读全文
posted @ 2013-07-14 00:33 ConquerMobileApp 阅读(890) 评论(0) 推荐(0) 编辑
摘要: 去掉targetSdkVersion或改为targetSdkVersion =13或更小。。不改targetSdkVersion的办法:在onCreate() 里setContentView()之后加入如下代码即可。try { window.addFlags(WindowManager.LayoutParams.class.getField("FLAG_NEEDS_MENU_KEY").getInt(null));}catch (NoSuchFieldException e) { // Ignore since this field won't exist in m 阅读全文
posted @ 2013-07-08 13:37 ConquerMobileApp 阅读(378) 评论(0) 推荐(0) 编辑
摘要: 从SDK2.3开始在android-sdk-windows\tools\下面多了一个proguard文件夹,proguard是一个java代码混淆的工具,不过代码混淆不能混淆xml的布局文件,混淆的是JAVA文件。 1、在eclipse中,android 2.3开始支持这个功能; 2、另一种是使用脚本如ant等。混淆器通过删除从未用过的代码和使用晦涩名字重命名类、字段和方法,对代码进行压缩,优化和混淆。 1、默认混淆文件:proguard.cfg文件,google默认不混淆Activity、Service ...类的子类,所有activity的子类名称是被保留的。让proguard.c... 阅读全文
posted @ 2013-06-28 12:01 ConquerMobileApp 阅读(1156) 评论(0) 推荐(0) 编辑
摘要: *res/raw和assets的相同点:1.两者目录下的文件在打包后会原封不动的保存在apk包中,不会被编译成二进制。*res/raw和assets的不同点:1.res/raw中的文件会被映射到R.java文件中,访问的时候直接使用资源ID即R.id.filename;assets文件夹下的文件不会被映射到R.java中,访问的时候需要AssetManager类。2.res/raw不可以有目录结构,而assets则可以有目录结构,也就是assets目录下可以再建立文件夹*读取文件资源:1.读取res/raw下的文件资源,通过以下方式获取输入流来进行写操作InputStream is = get 阅读全文
posted @ 2013-06-26 11:37 ConquerMobileApp 阅读(857) 评论(0) 推荐(0) 编辑
摘要: ArrayList的add方法每次添加一个对象时,添加 的是一个对象的引用,比如进行循环操作10次 lists.add(a) 每次 a会改变 ,这时候你会发现你在lists里添加了10个相同的对象a,都是指向最后一次的值,这是因为add的是一个引用,而非对象本身,所以add时内容会动态改变解决方法是,每一次add时,新建一个对象a就可以了 阅读全文
posted @ 2013-06-25 16:40 ConquerMobileApp 阅读(668) 评论(0) 推荐(0) 编辑
摘要: 最近重装系统,当然了Git也跟着重装了。不过这一次安装过后使用的时候,每次在我执行:Java代码gitadd.都会提示这样一个警告消息:Java代码warning:LFwillbereplacedbyCRLFinXXXXXXXXXXXXXX.虽然说没有什么影响吧。不过就是觉得太碍眼了,按照这样设置就没有问题了:Java代码gitconfigcore.autocrlffalse这样设置git的配置后在执行add操作就没有问题了。 阅读全文
posted @ 2013-06-25 16:35 ConquerMobileApp 阅读(1136) 评论(0) 推荐(0) 编辑
摘要: 今天买了个mac pro 开始ios开发啦,爽! 阅读全文
posted @ 2013-06-23 01:13 ConquerMobileApp 阅读(183) 评论(0) 推荐(0) 编辑
摘要: 2013年Google I/O大会,推出了新的Android集成IDE“Android Studio”,最大的转变就是从Eclipse切换到了Intellij IDEA。Google终于抛弃了Eclipse了IDE是个大坑,不是谁想做就能做的,关键问题是做了也赚不了大钱。Google才不会吃力不讨好,搞Chrome可以给搜索带流量,搞Android能打击对手苹果,搞IDE能干啥?所以,Google需要只是一个集成的傻瓜包而已。让只有一个月Java基础的人,也可以直接下载了这一个傻瓜包,照着教程就能学习Android,而不是把大把的时候花在折腾插件上。目标明确了,那剩下就是跟谁合作的问题。Ecl 阅读全文
posted @ 2013-06-04 10:26 ConquerMobileApp 阅读(308) 评论(0) 推荐(0) 编辑
摘要: android使用打包过程中proguard混淆后, 会导致一些错误1. 写在视图xml中的onClick响应出错. 因为写在xml中的onClick是通过反射调用的, proguard认为它们没有在代码中被调用过, 所以将它们从代码中除掉或改名了. 解决方法:在proguard.cfg中添加以下代码, 就可以防止被配在视图xml中的onClick方法被proguard优化掉-keepclassmembers class * extends android.app.Activity {public void *(android.view.View);}2. jni反调java方法这些类或方法同 阅读全文
posted @ 2013-05-31 16:35 ConquerMobileApp 阅读(9952) 评论(0) 推荐(0) 编辑
摘要: 在使用git 处理对android的修改的过程之中总结的.但不完善Git push$ git push origin test:master //提交本地test分支作为远程的master分支$ git push origin test:test //提交本地test分支作为远程的test分支如果想删除远程的分支呢?类似于上面,如果:左边的分支为空,那么将删除:右边的远程的分支。$ git push origin :test //刚提交到远程的test将被删除,但是本地还会保存的,不用担心。举个例子: git push origin :origin/Android_HK_K501_77-W91 阅读全文
posted @ 2013-05-31 11:42 ConquerMobileApp 阅读(39234) 评论(1) 推荐(2) 编辑
摘要: android:screenOrientationActivity在屏幕当中显示的方向。属性值可以是下表中列出的一个值:"unspecified"默认值,由系统来选择方向。它的使用策略,以及由于选择时特定的上下文环境,可能会因为设备的差异而不同。"user"使用用户当前首选的方向。"behind"使用Activity堆栈中与该Activity之下的那个Activity的相同的方向。"landscape"横向显示(宽度比高度要大)"portrait"纵向显示(高度比宽度要大)"rever 阅读全文
posted @ 2013-05-30 10:01 ConquerMobileApp 阅读(907) 评论(0) 推荐(0) 编辑
摘要: 网上流行一段代码获取状态栏高度 如下:Rect frame =newRect();getWindow().getDecorView().getWindowVisibleDisplayFrame(frame);intstatusBarHeight = frame.top;但是这个方法在 onCreate()方法中,获取高度为0不在onCreate()方法中是有效的现提供一方法,可以在任何时候都能获得正常高度。 //获取手机状态栏高度 public static int getStatusBarHeight(Context context){ Class<?> c = n... 阅读全文
posted @ 2013-05-27 13:07 ConquerMobileApp 阅读(4321) 评论(0) 推荐(0) 编辑
摘要: 客户端利用友盟的分享功能做第三方分享,但客户端混淆打包后,分享功能会报一些resource找不到的问题。这是因为友盟分享功能会用反射的方法去找自己需要的资源文件。被混淆后当然报错。解决方式可以在混淆配置文件中添加:-keep class **.R$* {*;} 阅读全文
posted @ 2013-05-20 13:28 ConquerMobileApp 阅读(969) 评论(0) 推荐(0) 编辑
摘要: 这篇文章对移动 APP 测试点做了一个整理,值得推荐。前段时间在weibo上看到有位前辈整理的android测试点,有感而发,结合我们现在的工作,整理了一下经常会遇到的问题。1.APP基本功能按照back log整理测试用例,测试中发现有需求变动、或未考虑完全,及时更新测试用例。测试用例包括:全功能点用例+重点功能快速回归用例2.Android特性测试横竖屏、home键、音量键、power键、返回键等横竖屏,跟需求相关。比如大图页横屏显示。Home键,回桌面,再切换回app,是否正常。返回键,返回上一操作界面。有可能出现需要多次退出app的情况。3.各种网络状态下进行测试慢网络。10k/sCM 阅读全文
posted @ 2013-05-19 12:46 ConquerMobileApp 阅读(469) 评论(0) 推荐(0) 编辑
摘要: Android三年,现在写代码,真心没什么很大的兴趣,每天都是优化代码,优化框架,技术支持。非常枯燥乏味。一个项目做了大半年,才做了1/4,光src就有3M了。对这种大型app,我表示很无奈。什么时候才能到个头。不过感谢我的line manager,让我专心做架构,还有我老大给予我技术支持。写代码的时候三要素:Stable,Flexible,Readable现在我搭个小型app的框架,大概3小时(复制,粘贴)1.HTTP框架,用自己的,2.ActionBarSherlock,集成actionbar,我还是比较喜欢4.0风格,现在做的app都遵守标准的4.03.重写ActionBar Style 阅读全文
posted @ 2013-05-18 15:58 ConquerMobileApp 阅读(275) 评论(0) 推荐(0) 编辑
摘要: 【1】好好规划自己的路,不要跟着感觉走!根据个人的理想决策安排,绝大部分人并不指望成为什么院士或教授,而是希望活得滋润一些,爽一些。那么,就需要慎重安排自己的轨迹。从哪个行业入手,逐渐对该行业深入了解,不要频繁跳槽,特别是不要为了一点工资而转移阵地,从长远看,这点钱根本不算什么,当你对一个行业有那么几年的体会,以后钱根本不是问题。频繁地动荡不是上策,最后你对哪个行业都没有摸透,永远是新手!【2】可以做技术,切不可沉湎于技术。千万不可一门心思钻研技术!给自己很大压力,如果你的心思全部放在这上面,那么注定你将成为孔乙己一类的人物!适可而止为之,因为技术只不过是你今后前途的支柱之一,而且还不是最大的 阅读全文
posted @ 2013-05-18 15:54 ConquerMobileApp 阅读(129) 评论(0) 推荐(0) 编辑
摘要: 在混淆里keep忽略掉这些类的父类!比如:Android工程混淆后报出如下错误:10-19 13:26:19.750: E/AndroidRuntime(13654): Caused by: android.view.InflateException: Binary XML file line #193: Error inflating… …E/AndroidRuntime(13480): Caused by: java.lang.ClassNotFoundException:xml文件中自定义了下面一个插件:对应的View实现定义如下:解决方案:android在用proguard混淆时,一般 阅读全文
posted @ 2013-05-17 23:49 ConquerMobileApp 阅读(814) 评论(0) 推荐(0) 编辑
摘要: 非常鸡冻的下载了Android Studio ,一路安装下来,欢欢喜喜点击图标没想到竟然没有任何反应,苦逼的我,以为双击太慢,右键打开,依然无效,上网一查,中文网页基本查不到信息,毕竟刚发布嘛,于是到stackoverflow上去查了下android studio cannot start,给出的大部分答案是添加环境变量,坑爹的,我们天天用eclipse能没有配置好环境变量,就继续找原因,有人说是JDK1.7才行,但有的同事1.6就可以,我再找问题原因1.我进android studio的安装目录,发现bin目录有很多bat批处理,运行studio.bat提示,2.修改studio.bat 第 阅读全文
posted @ 2013-05-16 19:40 ConquerMobileApp 阅读(1581) 评论(0) 推荐(0) 编辑
摘要: 今天维护之前同事写的一个应用的时候,出现这个报错 05-14 11:34:49.554: E/AndroidRuntime(7126): java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()05-14 11:34:49.554: E/AndroidRuntime(7126): at android.os.Handler.<init>(Handler.java:197)05-14 11:34:49.554: E/AndroidRun 阅读全文
posted @ 2013-05-14 11:43 ConquerMobileApp 阅读(899) 评论(0) 推荐(0) 编辑