`
guojianhui0906
  • 浏览: 46285 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论
文章列表
在 Java 支持方法指针之前,Java 接口不能提供一种实现回调的好方法。如果您习惯于传递在事件驱动编程模型中调用的函数指针,则您会喜欢本技巧。 熟悉 MS-Windows 和 X Window System 事件驱动编程模型的开发人员,习惯于传递在某种事件发生时调用(即“回调”)的函数指针。Java 的面向对象模型目前并不支持方法指针,这样似乎就不可能使用这种很好的机制。但我们并不是一点办法都没有! Java 的接口支持提供了一种获得回调的等价功能的机制。其技巧就是:定义一个简单接口,并在该接口中声明我们要调用的方法。 例如,假定我们希望在某个事件发生时得到通知。我们可以定义一个接口: ...
onInterceptTouchEvent()是ViewGroup的一个方法,目的是在系统向该ViewGroup及其各个childView触发onTouchEvent()之前对相关事件进行一次拦截,Android这么设计的想法也很好理解,由于ViewGroup会包含若干childView,因此需要能够统一监控各种touch事件的机会,因此纯粹的不能包含子view的控件是没有这个方法的,如LinearLayout就有,TextView就没有。 onInterceptTouchEvent()使用也很简单,如果在ViewGroup里覆写了该方法,那么就可以对各种touch事件加以拦截。但是如何拦截, ...
1.构造方法必须与定义它的类有完全相同的名字。构造方法没有返回类型,也没有void。 2.类可以不声明构造方法,这时类中隐含声明了一个方法体为空的无参构造方法。但当类有明确声明构造方法时,它就不会自动生成。 3.构造方法的调用:子类首先要调用父类的构造方法才能继承父类的属性和方法。如果子类的构造方法中没有显式地调用父类的构造方法,则系统默认调用父类无参数的构造方法。说说3种情况: ①父类和子类都没有显式定义构造方法或者只定义了无参构造方法,这种情况下没有问题,Java 会顺着继承结构往上一直找到 Object,然后从 Object 开始往下依次执行构造函数。以下两个例子效果一样,只是Exa ...
目前android还没有有关FMRadio的application接口类,下面对目前存在的一个实现案例进行分析。 硬件: BCM4329 + CPCAP         要求:BCM4327需要连接RX天线              audio analog out与CPCAP相连 软件:   FMRadio.apk   --> Java应用   libfmradio_jni.so : frameworks/base/fmradio/jni  --> Jni   libfmradioplayer.so  :             -->    HAL   libfmra ...
在android里,有4种activity的启动模式,分别为: “standard” (默认) “singleTop” “singleTask” “singleInstance” 它们主要有如下不同: 1. 如何决定所属task “standard”和”singleTop”的activity的目标task,和收到的Intent的发送者在同 ...
对于Launcher的桌面滑动大家应该都比较熟悉了,最好的体验应该是可以随着手指的滑动而显示不同位置的桌面, 比一般用ViewFlinger+动画所实现的手势切换页面感觉良好多了~~~~ 分析了一下Launcher中的WorkSpace,里面有太多的代码我们用不上了(拖拽,长按,,,),把里面的冗余代码去掉得到实现滑动切换屏幕所必需的。 新建一个ScrollLayout类,继承自ViewGroup。 重写onMeasure和onLayout两个方法: 其中onMeasure方法中,得到ScrollLayout的布局方式(一般使用FILL_PARENT),然后再枚举其中所有的子view, ...
前几天,和同事探讨了一下Android中的消息机制,探究了消息的发送和接收过程以及与线程之间的关系。虽然我们经常使用这些基础的东西,但对于其内部原理的了解,能使我们更加容易、合理地架构系统,并避免一些低级错误。 对于这部分的内容,将分成4小节来描述: 1.职责与关系 2.消息循环 3.线程与更新 4.几点小结 -------------------------------------------------------------------------------------------------- 1) 接下来,我们开始这部分的内容,首先了解一下各自的职责及相互之间的关系。 ...

String compareTo 用法

    博客分类:
  • java
 
compareTo()的返回值是整型,它是先比较对应字符的大小(ASCII码顺序),如果第一个字符和参数的第一个字符不等,结束比较,返回他们之间的 差值,如果第一个字符和参数的第一个字符相等,则以第二个字符和参数的第二个字符做比较,以此类推,直至比较的字符或被比较的字符有一方 全比较完,这时就比较字符的长度. 例: String s1 = "abc"; String s2 = "abcd"; String s3 = "abcdfg"; String s4 = "1bcdfg"; String s5 = &quo ...
ListView的动态加载,想必大家在网上都看过很多资料了。我在这里也不罗嗦,提供非常简单的Demo给一些需要的人。 这个Demo里面只有两个部分, Activity做显示,以及一个Factory创建信息。 MainActivity.java Java代码  收藏代码 package com.demo; import java.util.List; import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.view.LayoutInflate ...
在并发环境下,解决共享资源冲突问题时,可以考虑使用锁机制。 1.对象的锁 所有对象都自动含有单一的锁。 JVM负责跟踪对象被加锁的次数。如果一个对象被解锁,其计数变为0。在任务(线程)第一次给对象加锁的时候,计数变为1。每当这个相同的任务(线程)在此对象上获得锁时,计数会递增。 只有首先获得锁的任务(线程)才能继续获取该对象上的多个锁。 每当任务离开一个synchronized方法,计数递减,当计数为0的时候,锁被完全释放,此时别的任务就可以使用此资源。 2.synchronized同步块 2.1同步到单一对象锁 当使用同步块时,如果方法下的同步块都同步到一个对象上的锁,则所有的任务(线程)只能 ...
JAVA中synchronized关键字能够作为函数的修饰符,也可作为函数内的语句,也就是平时说的同步方法和同步语句块。搞清楚synchronized锁定的是哪个对象,就能帮助我们设计更安全的多线程程式。 AD: 不久前用到了同步,现在回过头来对JAVA中的同步做个总结,以对前段时间工作的总结和自我技术的条理话。JAVA的 synchronized关键字能够作为函数的修饰符,也可作为函数内的语句,也就是平时说的同步方法和同步语句块。假如再细的分 类,synchronized可作用于instance变量、object reference(对象引用)、static函数和class literals ...
1. 用户长按Launcher弹出添快捷组件的Dialog,选择添加AppWidget,这时会打开一个Activity(AppWidgetPickActivity)显示系统中全部AppWidget,单击某一个AppWidget后会做以下操作:      (1) 通过AppWidgetService获取一个最新的appWidgetId值。      (2) 根据获取的appWidgetId值,向单击的AppWidget组件发APPWIDGET_ENABLED和APPWIDGET_UPDATE更新广播。并向/data/system/appwidgets.xml中添加此AppWidget的基本信息 ...
1.  Android系统启动,SystemServer创建AppWidgetService,并调用systemReady()方法,在systemReady()方法中做以下三项准备工作:     (1)通过PackageManager从Android系统中查找所有已经被安装的AppWidget(包含"android.appwidget.action.APPWIDGET_UPDATE“ 的Action和meta-data标签),解析AppWidget的配置信息,封闭成对象,保存到List集合。     (2)从/data/system/appwidgets.xml文件读取已经被添加到 ...
要搞清楚read(byte[] b)和readFully(byte[] b)的区别,我从以下方面着手分析: 1.代码的具体实现 2.方法何时返回 3.字节是以什么方式在网络上传输的 1.read(byte[] b)调用read(byte[] b,0,b.length),其中的部分关键代码如下 Java代码  int c = read();//读取字节流中的下一个字节 if (c == -1) { return -1; } b[off] = (byte)c; int ...
1. 得到当前locale: Context.getResources().getConfiguration.locale; 2. 是否开启了auto-rotate:(这个和具体设备似乎也有关系,不确定是否通用) import android.provider.Settings; mAutoRotateSwitch = (Settings.System.getInt(this.getContentResolver(), Settings.System.ACCELEROMETER_ROTATION, 0) == 1);
Global site tag (gtag.js) - Google Analytics