在Android中自定义捕获Application全局异常,可以替换掉系统的强制退出对话框(很有参考价值与实用价值)
摘要:大家都知道,现在安装 Android 系统的手机和设备千差万别,在模拟器上运行良好的程序安装到某款手机上说不定就出现崩溃的现象,开发者个人不可能购买所有设备逐个调试,所以在程序发布出去之后,如果出现了崩溃现象,开发者应该及时获取在该设备上导致崩溃的信息,这对于下一个版本的 BUG 修复帮助极大,所以今天就来介绍一下如何在程序崩溃的情况下收集相关的设备参数信息和具体的异常信息,并发送这些信息到服务器供开发者分析和调试程序。我们先建立一个 crash 项目,项目结构如图:在 MainActivity.java 代码中,代码是这样写的:[java]view plaincopypackagecom.s
阅读全文
posted @
2012-11-28 17:21
lee0oo0
阅读(24889)
推荐(0) 编辑
[Android算法] android OutOfMemory时抓取heap快照
摘要:转自:http://www.eoeandroid.com/thread-232484-1-1.html首先说一下,在程序没有崩溃的时候如何抓取heap快照。这个大家应该都知道,在ddms中自带此功能。见上图首先我们选中一个进程,然后点击 Update Heap按钮(小绿虫子旁边的按钮),这时就能看到heap使用情况如果想取出快照详细分析,我们可以点击 Dump HPROF File按钮,保存到电脑上面。使用android-sdk/tools/hprof-conv这个工具把文件转换一下,之后用MAT分析即可。?代码片段,双击复制01hprof-conv '/home/su1216/dat
阅读全文
posted @
2012-11-28 17:14
lee0oo0
阅读(297)
推荐(0) 编辑
spring(12)
摘要:前置通知:把不同类中公有的方法提取出来作为一个类,形成一个切面。在需要调用的方法前可以织入其他行为,这个提取出来的类可以选择性的实现接口MethodBeforeAdvice,实现这个接口的方法:public void before(Method method , Object[] object , Object target){}***method表示调用的方法名,object表示该方法的参数,调用该方法的对象然后需要在spring的xml文件中进行配置1. 被代理的对象(普通bean的配置)2. 前置通知(如果无属性,配置id及其class即可)3. 代理对象(较为复杂)// 配置代理对象&
阅读全文
posted @
2012-11-27 09:26
lee0oo0
阅读(193)
推荐(0) 编辑
spring(11)
摘要:在bean文件可以引入properties(key=value)文件的值,${key}然后还需要添加这一句:<context : property-placeholder location="classpath:上面引入properties文件的绝对路径">如果是多个properties:<context : property-placeholder location="classpath:上面引入properties文件的绝对路径,classpath:上面引入properties文件的绝对路径”>
阅读全文
posted @
2012-11-26 16:59
lee0oo0
阅读(185)
推荐(0) 编辑
spring(9)
摘要:通过构造器注入值:<bean> <constructor-args index="参数的顺序,从0开始" type="参数类型" value="值" ref="对象类型"/><bean>自动装配(autowire):1.autowire =byName;例,a中有一个基本类型属性,和一个引用类型属性(dog),这里只配基本类型的<bean id="a" class="A.a" autowire="byNmae"&g
阅读全文
posted @
2012-11-26 16:58
lee0oo0
阅读(201)
推荐(0) 编辑
spring(10)
摘要:启用注解:在<bean>配置中添加<context:annotation-config/>
阅读全文
posted @
2012-11-26 16:58
lee0oo0
阅读(111)
推荐(0) 编辑
spring(7)
摘要:1. 属性注入的是数组,读取的时候需要遍历<property name=""> <list> <value></value><value></value><value></value><value></value> </list></property>2. 属性注入的是List,读取的时候需要遍历<property name=""> <list> <ref bean="&q
阅读全文
posted @
2012-11-26 16:57
lee0oo0
阅读(203)
推荐(0) 编辑
spring(8)
摘要:Bean(B)继承了父类Bean(A),那么这种形式在配置bean并且为bean设置的时候如何体现呢?在配置Bean(B)的时候,添加属性parent=“Bean(A)对象”,那么Bean(B)就能继承Bean(A)的属性及其值。如果Bean(B)需要设置属于自己的值,可是设置,他会覆盖Bean(A)的。
阅读全文
posted @
2012-11-26 16:57
lee0oo0
阅读(115)
推荐(0) 编辑
spring(5)
摘要:实现BeanPostProcessor接口并实现其中的方法,然后在xml文件中配置bean,则可以实现对所有bean的编程,也就是说每个bean实例化的时候都会执行 BeanPostProcessor里面的方法。注意,实现的这两个方法before与after并不是一起调用的,实现了before方法后还可以(不一定)执行两个方法(跟着分别列出说)后再调用after方法。1. 实现InitialzingBean接口,实现afterPropertiesSet方法。2. 自己定制的方法,在bean设置里面有个属性init-method=“方法名”,然后在代码实现这个方法public void 方法名(
阅读全文
posted @
2012-11-26 16:56
lee0oo0
阅读(221)
推荐(0) 编辑
spring(6)
摘要:实现DisposableBean接口,实现其方法,能在bean被调用完将要销毁的时候调用。可以在这里释放资源,关闭什么等操作。不过也可以使用定制方式实现上面的操作。在bean配置中添加属性destroy-method=“方法名”。在加载bean的类当中实现这个方法。自定制的方法可以不在xml文件里面配置,而是以注解的方式@PreDestroypublic void 方法名(){}注意:以上的bean生命周期都是在使用ApplicationContext加载bean的时候是这样,如果是使用BeanFactory的不完全一样,少了BeanPostProcessor
阅读全文
posted @
2012-11-26 16:56
lee0oo0
阅读(131)
推荐(0) 编辑
spring(3)
摘要:其他常用的加载xml:1. ClassPathXmlApplicationContext:从类路径中加载。2. FileSystemXmlApplicationContext:从文件系统加载。实例中需要传入绝对路径3. XmlWebApplicationContext:从未被系统中加载。
阅读全文
posted @
2012-11-26 16:54
lee0oo0
阅读(128)
推荐(0) 编辑
spring(4)
摘要:实现BeanNameAware接口,复写public void setBeanName(String arg0){}方法,参数arg0是获得正在加载的那个bean的id实现BeanFactoryAware接口,复写public void setBeanFactory(BeanFactory arg0) throws BeansException{}方法,就可以获取bean工厂实现ApplicationContextAware接口,复写public void setApplicationContext(ApplicationContext arg0) throws BeansException{
阅读全文
posted @
2012-11-26 16:54
lee0oo0
阅读(170)
推荐(0) 编辑
spring(1)
摘要:1. 引入spring的开发包(最少配置spring.jar该包把常用的jar都包括,还要写日志包common-logging.jar)2. 创建spring的一个核心文件applicationContext.xml,该文件一般放在src目录下,该文件中引入xsd文件3. 配置bean<beans> <bean id="类实例" class="类名"> <property name="变量名"> <value>变量名的值<value> <bean></bea
阅读全文
posted @
2012-11-26 16:53
lee0oo0
阅读(212)
推荐(0) 编辑
spring(2)
摘要:使用bean工厂获得bean的方法:BeanFactory factory = new XmlBeanFactory(new ClassPathResource("applicationContext.xml"));factory.getBean("");与ClassPathXmlApplicationContext加载的不同是,这个方法只在getBean的时候才会创建Bean对象(针对于bean的scope是singleton,如果是prototype的话无区别)。一般程况下还是使用ClassPathXmlApplicationContext方法,而当
阅读全文
posted @
2012-11-26 16:53
lee0oo0
阅读(147)
推荐(0) 编辑
Android之界面刷新(invalidate和postInvalidate使用)
摘要:Android中实现view的更新有两组方法,一组是invalidate,另一组是postInvalidate,其中前者是在UI线程自身中使用,而后者在非UI线程中使用。Android提供了Invalidate方法实现界面刷新,但是Invalidate不能直接在线程中调用,因为他是违背了单线程模型:Android UI操作并不是线程安全的,并且这些操作必须在UI线程中调用。 Android程序中可以使用的界面刷新方法有两种,分别是利用Handler和利用postInvalidate()来实现在线程中刷新界面。1,利用invalidate()刷新界面 实例化一个Handler对象,并重写ha..
阅读全文
posted @
2012-11-26 10:16
lee0oo0
阅读(16498)
推荐(0) 编辑
Android之ImageSwitch控件
摘要:ImageSwitch可以实现图片的使用按钮实现上一张下一张浏览的效果。1、 使用ImageSwitch的控件2、 需要实现viewFractory接口,复写方法makeView,因为是显示图片,所以需要return new ImageView(context);3、 ImageSwitch需要使用setFactory(传入viewFractory对象)
阅读全文
posted @
2012-11-25 12:07
lee0oo0
阅读(3269)
推荐(0) 编辑
Android之获得内存剩余大小与总大小
摘要:publicclassmemInfo{//获得可用的内存publicstaticlonggetmem_UNUSED(ContextmContext){longMEM_UNUSED; // 得到ActivityManager ActivityManageram=(ActivityManager)mContext.getSystemService(Context.ACTIVITY_SERVICE); // 创建ActivityManager.MemoryInfo对象ActivityManager.MemoryInfomi=newActivityManager.MemoryInfo();am....
阅读全文
posted @
2012-11-23 16:08
lee0oo0
阅读(17355)
推荐(2) 编辑
使用非阻塞ServerSocketChannel、SocketChannel代替ServerSocket和Socket
摘要:转:http://blog.csdn.net/timliang18601860/article/details/7104485在使用传统的ServerSocket和Socket的时候 很多时候程序是会阻塞的比如 serversocket.accept() , socket.getInputStream().read() 的时候都会阻塞 accept()方法除非等到客户端socket的连接或者被异常中断 否则会一直等待下去read()方法也是如此 除非在输入流中有了足够的数据 否则该方法也会一直等待下去知道数据的到来.在ServerSocket与Socket的方式中 服务器端往往要为每一个客户端
阅读全文
posted @
2012-11-23 10:21
lee0oo0
阅读(1102)
推荐(0) 编辑
Android之滑动按钮实现Demo
摘要:直接上Demo供下载:/Files/lee0oo0/滑动按钮实现Demo.rar
阅读全文
posted @
2012-11-22 15:58
lee0oo0
阅读(456)
推荐(0) 编辑
Android之改变控件的背景及形态
摘要:1. 改变背景在res/drawable下创建一个xml文件:<?xmlversion="1.0"encoding="UTF-8"?><selectorxmlns:android="http://schemas.android.com/apk/res/android"> // 控件被按下时候的背景<itemandroid:state_pressed="true"android:drawable="@drawable/search_bar_edit_pressed"/
阅读全文
posted @
2012-11-22 09:51
lee0oo0
阅读(2176)
推荐(0) 编辑
Android之读取 AndroidManifest.xml 中的数据:版本号、应用名称、自定义K-V数据(meta-data)
摘要:转:http://www.2cto.com/kf/201208/151123.html Android开发中我们常常需要知道,当前应用的版本信息。可以进行自动升级判断。扩展自定义数据 meta-data, 这些数据都在AndroidManifest.xml .我们如何获取这些信息呢?下来示例如何读取这些数据。1 版本信息、应用名称2 Appliction 的Meta-data3 Activity中的Meta-dataAndroidManifest.xml中的定义如下:<manifest xmlns:android="http://schemas.android.com/apk/
阅读全文
posted @
2012-11-21 10:33
lee0oo0
阅读(8921)
推荐(0) 编辑
cordova2.2对于CordovaWebView的配置
摘要:Java文件配置:官方说明不够清晰packageorg.apache.cordova.example;importjava.util.concurrent.ExecutorService;importjava.util.concurrent.Executors;importandroid.app.Activity;importandroid.content.Context;importandroid.content.Intent;importandroid.os.Bundle;importorg.apache.cordova.*;importorg.apache.cordova.api.Cor
阅读全文
posted @
2012-11-19 15:07
lee0oo0
阅读(4753)
推荐(0) 编辑
Android动画效果——X、Y轴抖动
摘要:1. 控件加载动画Animation shakeAnim = AnimationUtils.loadAnimation(Context, 动画资源(R.anim.shake_y));View.startAnimation(shakeAnim);2. Res的anim文件夹的shake_y.xml文件<?xml version="1.0" encoding="utf-8"?><translate xmlns:android="http://schemas.android.com/apk/res/android" and
阅读全文
posted @
2012-11-16 15:20
lee0oo0
阅读(6132)
推荐(0) 编辑
Android之更换皮肤
摘要:转载于 http://blog.csdn.net/suiyc/article/details/6329212自己添加入一些例子国内有很多的软件都支持皮肤定制,这也是与国外软件重大不同之一,国外用户注重社交、邮件等功能,国内用户则重视音乐、小说、皮肤等功能,本节课程就来讲解Android应用程序如何实现换肤功能。软件换肤从功能上可以划分三种:1) 软件内置多个皮肤,不可由用户增加或修改;最低的自由度,软件实现相对于后两种最容易。2) 官方提供皮肤供下载,用户可以使用下载的皮肤;用户可选择下载自己喜欢的皮肤,有些玩家会破解皮肤的定制方法,自己做皮肤使用,或者传到网上给大家用。3) 官方提供皮肤制作
阅读全文
posted @
2012-11-13 11:15
lee0oo0
阅读(2791)
推荐(0) 编辑
Android之背景图片设置为重复而不是默认的拉伸
摘要:创建重复的背景图片在drawable目录下创建一个repeat_bg.xml: src是引用图片的名称 1 <?xmlversion="1.0"encoding="utf-8"?> 2 <bitmapxmlns:android="http://schemas.android.com/apk/res/android" 3 ...
阅读全文
posted @
2012-11-11 14:13
lee0oo0
阅读(8008)
推荐(1) 编辑
读取Assets所存在的所有文件(遍历每一个文件夹),并存入sdcard里面
摘要:privatevoidCopyAssets(StringassetDir,Stringdir){String[]files;try{//获得Assets一共有几多文件files=this.getResources().getAssets().list(assetDir);}catch(IOExceptione1){return;}FilemWorkingPath=newFile(dir);//如果文件路径不存在if(!mWorkingPath.exists()){//创建文件夹if(!mWorkingPath.mkdirs()){//文件夹创建不成功时调用}}for(inti=0;i<f
阅读全文
posted @
2012-11-11 10:10
lee0oo0
阅读(3645)
推荐(0) 编辑
读取Assets所存在的文件,并存入sdcard里面
摘要:publicclassAssetsDemoActivityextendsActivityimplementsOnClickListener{privateButtonread,write;@OverridepublicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);read=(Button)findViewById(R.id.read);write=(Button)findViewById(R.id.write);read.setOnC
阅读全文
posted @
2012-11-07 22:17
lee0oo0
阅读(1711)
推荐(1) 编辑
对数据库增删改查的Demo增加了分页的功能
摘要:// 获得LinearLayout layout=(LinearLayout)findViewById(R.id.paging); // 用来存放动态生成的TextView ArrayList<TextView>list=newArrayList<TextView>(); // 获得数据库的记录总条数totalCount=getRowNum();Log.v("totalCount",totalCount+""); // 以每页5条数据划分显示,计算共有几页 intpage=(int)Math.ceil(totalCount/5.0
阅读全文
posted @
2012-11-06 16:40
lee0oo0
阅读(1202)
推荐(0) 编辑