- 浏览: 97731 次
- 性别:
- 来自: 杭州
最新评论
-
邱一河:
sinaoauth的web项目 下载不了啊,帮忙发个噻,谢谢啊 ...
新浪微博OAuth授权的Java实现 -
hety163:
受教了
Toast和Looper。Handler消息循环机制。 -
dcljava:
分析的不错!
Toast和Looper。Handler消息循环机制。 -
lxchuan:
我用sinaoauth的web项目,登录授权后,如何获取用户信 ...
新浪微博OAuth授权的Java实现 -
QinIce:
那如果是在2.2中怎么获取到安装时间呢?有什么好的方法没?
获得已安装程序的大小和时间
文章列表
Displaymetrics 是取得手机屏幕大小的关键类,直接看代码:
// 获得手机屏幕大小
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
int screenWidth = dm.widthPixels;
int screenHeight = dm.heightPixels;
(1) Looper类别用来为一个线程开启一个消息循环。默认情况下Android中新诞生的线程是没有开启消息循环的。(主线程除外,主线程系统会自动为其创建Looper对象,开启消息循环)
Looper对象通过MessageQueue来存放消息和事件。一个线程只能有一个Looper,对应一个MessageQueue。
(2) 通常是通过Handler对象来与Looper交互的。Handler可看做是Looper的一个接口,用来向指定的Looper发送消息及定义处理方法。
默认情况下Handler会与其被定义时所在线程的Looper绑定,比如,在主线程中定义,其是与主线程的Loop ...
一、什么是GWT?
Google Web Toolkit (GWT):GWT允许开发人员使用 Java 编程语言快速构建和维护复杂但性能高的 JavaScript 前端应用程序,从而降低了开发难度,尤其是与 Eclipse Google 插件结合使用时,优势更明显。
有了 Google Web Toolkit (GWT),可以使用 Java 编程语言编写 AJAX 前端,然后 GWT 会交叉编译到优化的 JavaScript 中,而 JavaScript 可以自动在所有主要浏览器上运行。在开发过程中,您可以用 JavaScript 按照您习惯的“编辑 - 刷新 - 查看”这种不变的循 ...
方法论探讨之概念空间篇
我们潜意识就不想用计算机的方式来思考问题,我们有自己的思维描述方式,越是接近我们思维描述方式,我们越容易接受和使用。各种计算机语言,建模工具,不外乎就是建立一个更接近人的思维方式的概念空间,再使用工具从该概念空间向另外一个概念空间映射,我称之为人性思维空间向01序列描述空间的一个映射。实现方面来看,系统就是一个翻译器,将机器性更加人性化的一种机制。大学计算机经典课“计算机体系结构”,其他的可以忘记,但是下面这个图不能忘记:
这个就是概念空间最本质的原型体现:作为观测者看到了什么?设计者给了观察者什么?给出的答案是外部特性。
(1)提 ...
分析方法论探讨之设计意图
为什么要研究Android,是因为它够庞大,它够复杂,他激起了我作为一个程序员的内心的渴望,渴望理解这种复杂性。我研究的对象是作为手机开发平台的Android软件系统部分,而不是Dalvik虚拟机本身。
作为一个从其他平台装接过来的程序员,要从事Andoid
序列化是把一个对象的状态写入一个字节流的过程,它执行RMI,RMI允许一台机器上的JAVA对象调用不同机器上的JAVA对象方法,对象可以作为参数提供给那个远程方法,发送机序列化该对象并传送它,接收机执行反序列化。 序列化和反序列化的关系图表可形成包含循环引用的顺序图表。这是整个序列化的总体思想。 而Serializable接口属于支持序列化的一个接口,只有一个实现它的对象可以被序列化工具存储和回复,Serializable接口没有定义任何成员,只用来表示一个累可以被序列化,若该类可以序列化,那么它的所有子类都可以。 下面是关于序列化的一个实例: 程序名称:SerializationDemo.ja ...
集合类说明及区别Collection├List│├LinkedList│├ArrayList│└Vector│ └Stack└SetMap├Hashtable├HashMap└WeakHashMapCollection接口 Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements)。一些 Collection允 ...
Android应用程序开发中,有的时候我们在应用程序的任何一个地方都需要访问一个全局变量,也就是在任何一个Activity中都可以访问的变量。它不会因为Activity的生命周期结束而消失。要实现应用程序级的变量,我们可以通过Application这个类来实现。 首先,我们新建一个类HelloApplication继承Android.app.Application类,然后在我们的类中增加一些变量。如下所示:
public class HelloApplication extends Application {
private int globalVariable=1;
...
List<PackageInfo> packs = getPackageManager().getInstalledPackages(0);
虽然,有些代码号称可以过滤掉系统自身的应用程序,但是只要细看代码就会发现,好像里面的那个布尔变量没有起到什么过滤的作用。
因此,一种方法是,通过获取的安装包(包括安装的与系统自身的应用程序),对其android.content.pm.PackageInfo的packageName 进行过滤,
但是Anrodi与google的包比较容易过滤掉,但需要对不同产商进行适配;
另外一种方法是:枚举 \data\app 文件夹,其下的*.apk文件 ...
1,通过PackageManager获得已安装程序:
List installedList = mPackageManager.getInstalledPackages(0);
for (PackageInfo info : installedList) {
mInstalledList.add(info.packageName + ":" + info.applicationInfo.publicSourceDir + ":" + info.application.SourceDir);
count++;
}
packageName取得应用 ...
String 字符串常量StringBuffer 字符串变量(线程安全)StringBuilder 字符串变量(非线程安全) 简要的说, String 类型和 StringBuffer 类型的主要性能区别其实在于 String 是不可变的对象, 因此在每次对 String 类型进行改变的时候其实都 ...
adapte listview 数据源之间的关系图
当我们滑动listview的时候每一条数据进入可见区域的时候adapter的getView方法就会被调用,返回代表具体数据的视图。那么当我们的listview中有多条数据的时候(一般都是有多条数据的),getView方法就会反复多次的频繁调用。这样的listview就可以显示很多数据,即成百上千条数据。
显而易见,由于getview方法是频繁调用的我们应该经历的在这个方法中尽可能少的产生对象,最大可能大的提高这个方法的工作效率。这样我们的list的更新速度才不至于太慢。
剖析listview
刚学android,在windows xp上开发的,不会makefile,ndk还没仔细研究,或许对一些初学者有用。一、Android Apk签名Apk签名首先要有一个keystore的签名用的文件。keystore是由jdk自带的工具keytool生成的。具体生成方式参考:开始->运行->c ...
ActivityManager mManager = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
1,正在运行的任务 不会列出系统的程序
//取得系统正在运行的程序,采用返回键返回的程序不会被当做正在运行,
List mRunningTasks = mManager.getRunningTasks(30);
//使用baseActivity来获得该程序的包名,通过包名获得程序名称和图标
mTask.baseActivity.getPackageName();
2,正在运行的进程
//得到正在运行的Acti ...
主要代码:
/**
* 用户按下触摸屏、快速移动后松开即触发这个事件 e1:第1个ACTION_DOWN MotionEvent e2:最后一个ACTION_MOVE
* MotionEvent: velocityX:X轴上的移动速度,像素/秒 velocityY:Y轴上的移动速度,像素/秒 触发条件 :
* X轴的坐标位移大于FLING_MIN_DISTANCE,且移动速度大于FLING_MIN_VELOCITY个像素/秒
*/
@Override
public boolean onFling(MotionEvent ...