分享

那些人追过的年

 天涯军博 2016-09-01
摘要: 最近网络不错,一高兴把SDK升级了,结果你懂的----SVN只能检出,不能上传。 我的SDK升级到4.2.2了,ADT17,本来呢 eclipse安装的SVN插件1.6.18,服务器版本1.6, 结果SDK一升级 prefencese中tem SVN升到了1.7 ,然后呢,悲剧了,只能检出项目,不能上传,显示上传进度为0。 解决思路:将eclipse SVN相关包都要卸载,然后重新安装。结果:由于一些包是1.82以上,依赖包也需要高版本的,不能使用1.6的。 对策:将安装的包全部卸载,重新下载安装。 重新下载安装还是提示如下错误:Android Native Development Tool.阅读全文
posted @ 2013-06-06 10:41 那些人追过的年 阅读(173) 评论(0) 编辑
摘要: 在移动设备上,不管是ios还是android大家都喜欢使用sqlite,它体积小功能却不错,满足大家的需求。但是使用过大家都清楚免费版sqlite数据是明文的,如果存放的是用户敏感信息,只要取出应用中的数据库,神马用户名,密码都一目了然。 那么你还敢使用手机登录什么网银神马的么?? 使用免费版本的没有加密模块,如果需要加密模块,需要大大们支付2000$,收费sqlite叫做 SEE,The SQLite Encryption Extension (SEE),链接?看下面咯. SQLite数据库设计中考虑了安全问题并预留了加密相关的接口。但是并没有给出实现。SQLite 数据库源码中通过使用S.阅读全文
posted @ 2013-05-15 18:16 那些人追过的年 阅读(1850) 评论(0) 编辑
摘要: 由于工作原因,大家都可能需要反编译一些apk去学习别人优秀的界面设计或者代码实现,那么网上的关于androd APK反编译的贴已经很多了,大家肯定都非常清楚,有些贴子还非常贴心的给出了反编译工具的下载链接,非常温馨,对于像我这样下载的反编译工具有时找不见,然后又去翻帖子,可以很快的获得整套工具实现反编译,非常感谢他们!! 同时在看帖子的同时发现有个小小的问题,就是这些帖子给出的托管在服务器上链接下载地址,有时帖子写的比较早,下载的反编译工具版本低,就无法反编译使用新版本的aapt编译出来的apk,同时许多人下载以后并没有看看官网,这工具来源和版本,了解更多一些东西,当然这只是针对于andro.阅读全文
posted @ 2013-04-15 16:31 那些人追过的年 阅读(2445) 评论(4) 编辑
摘要: 已经通过实测解决了昨天的问题,但是现在此刻眼下火烧眉头的说这个问题真是困扰我了。实在无法得知,如何解决??。求解啊!!!!使用make以后报错如下:host C: acp <= build/tools/acp/acp.ccc: error trying to exec 'cc1': execvp: 没有那个文件或目录make: *** [out/host/linux-x86/obj/EXECUTABLES/acp_intermediates/acp.o] 错误 1我配置的环境,以及系统版本如下:环境中安装source.android.com中都有配置系统ubuntu 12阅读全文
posted @ 2013-04-02 22:11 那些人追过的年 阅读(268) 评论(0) 编辑
摘要: 近期在进行android源码编译,环境搭建神码痛苦不堪,在编译过程中更是错误不断,想想在windows环境下习惯了,切换到ubuntu上来操作,真真到一时难以适应。 各位看官,下面问题是出现在-------环境已经正确配置完成,执行make时出现的错误以及解决办法。希望能对大家有所帮助。 首先说一下,目前环境搭建/系统版本/android版本, 环境搭建 :大家可以按照官网, source.android.com ,执行。 系统版本: ubuntu 12.10 32位系统 android版本 4.0.1r1 jdk:1.6(这里大家注意,编译android ) 注:1.因为我安...阅读全文
posted @ 2013-04-02 20:07 那些人追过的年 阅读(5386) 评论(1) 编辑
摘要: android通信录想必大家都不会陌生,有系统自带的联系人,也有比如qq通信录,百度通讯录,,来电通,go联系人等。每种大家可能都有有偏好喜爱,但是这里我个人推荐大家使用qq通信录、百度通讯录以及来电通。 这些在界面上都具有相同的东西,比如下方一般是3-4个tab,分别为通话(拨号),联系人,信息,设置(工具),使用tabactivity,完成框架。都具有云同步的功能,云同步里面就有比较多的内容,账号、个人信息、各种备份、各种还原、归属地、隐私设置保存同步、等等。 下面就通讯录中联系人模块进行比较: qq、百度通讯录在ui上总是会有不时的创意,这在视觉效果上更加让人保持新鲜感,qq的list.阅读全文
posted @ 2013-03-19 14:45 那些人追过的年 阅读(3734) 评论(0) 编辑
摘要: 这篇文章只是总结下getView里面优化视图的几种写法,就像孔乙己写茴香豆的茴字的几种写法一样,高手勿喷,勿笑,只是拿出来分享,有错误的地方欢迎大家指正,谢谢。listview A view that shows items in a vertically scrolling list 。一个显示一个垂直的滚动子项的列表视图 在android开发中,使用listview的地方很多,用它来展现数据,成一个垂直的视图。使用listview是一个标准的适配器模式,用数据--,界面--xml以及适配器--adapter,数据被适配器按照需要的方式展现出来,xml描写了数据如何展现,activity中控阅读全文
posted @ 2012-11-08 13:32 那些人追过的年 阅读(5402) 评论(4) 编辑

EventBus是Android下高效的发布/订阅事件总线机制。作用是可以代替传统的Intent,Handler,Broadcast或接口函数在Fragment,Activity,Service,线程之间传递数据,执行方法。特点是代码简洁,是一种发布订阅设计模式(Publish/Subsribe),或称作观察者设计模式。

下面对EventBus框架使用进行介绍以及一些需要注意的地方。

1.EventBus使用配置。

1)在gradle中添加:compile 'org.greenrobot:eventbus:3.0.0'
2)在需要接受event的类中注册和结束注册,如activity中 onCreate方法中使用EventBus.getDefault().register(this);
在onDestory方法中使用 EventBus.getDefault().unregister(this);
3)增加EventModel,如:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class FirstEventModel {
  
private String msg;
  
public FirstEventModel(String msg){
this.msg = msg;
}
  
public String getMsg() {
return msg;
}
  
public void setMsg(String msg) {
this.msg = msg;
}
}

  

4).在接受Event类中 增加需要处理的方法。处理的方法有四个
四个方法分别为:
---onEvent()://如果使用onEvent作为订阅函数,那么该事件在哪个线程发布出来的,onEvent就会在这个线程中运行,
         也就是说发布事件和接收事件线程在同一个线程。使用这个方法时,在onEvent方法中不能执行耗时操作,
        如果执行耗时操作容易导致事件分发延迟。
---onEventMainThread()://如果使用onEventMainThread作为订阅函数,那么不论事件是在哪个线程中发布出来的,
        onEventMainThread都会在UI线程中执行,接收事件就会在UI线程中运行,
        这个在Android中是非常有用的,因为在Android中只能在UI线程中跟新UI,
         所以在onEvnetMainThread方法中是不能执行耗时操作的。
---onEventBackgroudThread()://如果使用onEventBackgrond作为订阅函数,那么如果事件是在UI线程中发布出来的,
        那么onEventBackground就会在子线程中运行,如果事件本来就是子线程中发布出来的,
        那么onEventBackground函数直接在该子线程中执行。
---onEventAsync():
        //使用这个函数作为订阅函数,那么无论事件在哪个线程发布,都会创建新的子线程在执行onEventAsync.
注意:首先上述方式可以使用多态的方式,在回调的时候,eventBu框架会根据参数的不同,通过反射判断选择使用哪个方法调用,如果参数一致则多个方法都会被调用。
          其次这些方法一定要加上注解: @Subscribe
代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
@Subscribe
public void onEvent(){
//如果使用onEvent作为订阅函数,那么该事件在哪个线程发布出来的,onEvent就会在这个线程中运行,
// 也就是说发布事件和接收事件线程在同一个线程。使用这个方法时,在onEvent方法中不能执行耗时操作,
// 如果执行耗时操作容易导致事件分发延迟。
  
}
@Subscribe
public void onEventAsync(){
//使用这个函数作为订阅函数,那么无论事件在哪个线程发布,都会创建新的子线程在执行onEventAsync.
  
}
@Subscribe
public void onEventBackgroundThread(){
//如果使用onEventBackgrond作为订阅函数,那么如果事件是在UI线程中发布出来的,
// 那么onEventBackground就会在子线程中运行,如果事件本来就是子线程中发布出来的,
// 那么onEventBackground函数直接在该子线程中执行。
  
}
  
@Subscribe
public void onEventMainThread(FirstEventModel firsEventModel){
//如果使用onEventMainThread作为订阅函数,那么不论事件是在哪个线程中发布出来的,
// onEventMainThread都会在UI线程中执行,接收事件就会在UI线程中运行,
// 这个在Android中是非常有用的,因为在Android中只能在UI线程中跟新UI,
// 所以在onEvnetMainThread方法中是不能执行耗时操作的。
activity_main_tv.setText(firsEventModel.getClass().getSimpleName() + ":" +firsEventModel.getMsg() );
}
@Subscribe
public void onEventMainThread(SecondEventModel secondEventModel){
//如果使用onEventMainThread作为订阅函数,那么不论事件是在哪个线程中发布出来的,
// onEventMainThread都会在UI线程中执行,接收事件就会在UI线程中运行,
// 这个在Android中是非常有用的,因为在Android中只能在UI线程中跟新UI,
// 所以在onEvnetMainThread方法中是不能执行耗时操作的。
activity_main_tv.setText(secondEventModel.getClass().getSimpleName() + ":" + secondEventModel.getCode());
}

  

2.从使用体验上感受EvenBus在处理同一进程下、不同activity、fragment的通信机制上解耦合 是比较好用的,降低了一些开发者对于解耦合处理的难度要求。有一些机制比如:startActivityForResult、广播、handle等这些可以使用eventBus替代,代码的维护性会比较高。

3.图说EventBus

 

这里发布者是可以有多个的,通过调用post方法,eventbus则通过反射机制根据参数列表判断调用哪个Subcriber,如果是多个subcriber参数列表一致,则都会调用,而且优先级越高则越在前面被调用到。

 

点击此处下载demo

 

posted @ 2016-05-06 12:32 那些人追过的年 阅读(447) 评论(0) 编辑
摘要: 微信、qq聊天详情时间格式阅读全文
posted @ 2015-11-19 16:33 那些人追过的年 阅读(83) 评论(0) 编辑
摘要: 公司项目选择了umeng的更新功能和,统计插件,而由于版本的管理,使得需要针对某些版本进行强制更新。比如上个版本出现了重大问题,必须进行版本升级才能修复,产品架构有了重大调整,数据结构发生了变化导致原先的app无法解析等等情况。但是查过umeng的产品文档,点击跳转地址为:坑爹的umeng竟然没...阅读全文
posted @ 2015-04-29 17:11 那些人追过的年 阅读(5263) 评论(0) 编辑
摘要: 最近在看了许多关于dp-px,px-dp,sp-px,px-sp之间转化的博文,过去我比较常用的方式是: 1 //转换dip为px 2 public static int convertDipOrPx(Context context, int dip) { 3 float scale ...阅读全文
posted @ 2015-04-21 16:55 那些人追过的年 阅读(6847) 评论(0) 编辑
摘要: 在最近的项目开发中,使用webview加载html页面,这样可以节省大量页面开发的时间,同时也可加快项目进度。我们需求是需要显示商品评论,页面设计如下:调用android代码,对于webview的设置如下:webView.getSettings().setJavaScriptEnabled(true...阅读全文
posted @ 2015-03-04 15:26 那些人追过的年 阅读(1966) 评论(0) 编辑
摘要: AndroidTouchGalleryLibrary 是一个非常好用的库,但是使用的时候,需要小心处理,容易引发OutOfMemoryError,同时使用UrlTouchImageView的时候,从网络下载是没有缓存的,因此每次都是新加载图片,同时使用在线家在较大图片容易导致程序挂掉因此将原先的Ur...阅读全文
posted @ 2015-01-21 16:05 那些人追过的年 阅读(808) 评论(0) 编辑
摘要: 最近在开发平板项目,完全是fragmentactivity+fragment的结构。看起来似乎简单,但是和以前不同的是,业务逻辑非常复杂,多处的非常规跳转,fragment之间的数据交换,一处更新多处更新等操作,有时玩起来都心塞。项目背景介绍完毕。现在有这样一个场景,项目需求是,后台可配置功能,也就...阅读全文
posted @ 2015-01-21 10:10 那些人追过的年 阅读(2386) 评论(0) 编辑
摘要: 对于radiaoButton,应该很多人都用过。下面看一个场景 上方时radiogroup,细致观察发现左1,文字开始位置和右1文字开始位置不同,这是为何呢?查看布局: 发现并无什么特别,style定义如下: 那么问题就来了,造成左右区别的到底是哪个属性?原来这里我...阅读全文
posted @ 2014-11-24 22:08 那些人追过的年 阅读(867) 评论(0) 编辑
摘要: listview.setEmpty(View view);使用listView或者gridView时,当列表为空时,有时需要显示一个特殊的empty view来提示用户,今日对这个方法进行一下小结,书写的方式有三种:1.一般情况下,继承ListActivity,只要 当列表为空时就会自动显示Tex...阅读全文
posted @ 2014-11-11 11:05 那些人追过的年 阅读(325) 评论(0) 编辑
摘要: 这段时间在给朋友申请苹果账号,从个人开发者账号、团体账号到公司账号,申请了个遍。这里对申请流程做一下介绍,方便其他朋友,少走弯路,账号早日申请通过。 1.首先介绍下个人开发者账号、团体账号、公司账号之间的区别: 用途限制是否需要邓白氏码费用(元)申请地址个人开发者账号用于个人开发者上传和发...阅读全文
posted @ 2014-10-20 14:37 那些人追过的年 阅读(68114) 评论(8) 编辑

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多