UUTON

悠悠途恩

user tag detected on new module错误

环境:ubuntu 10.04 X86_64

编译android

#make -j4时和make c文件为so文件时,有如下报错信息:

……

build/core/base_rules.mk:102: *** user tag detected on new module - user tags are only supported on legacy modules. Stop.


查询了下官方文档才发现如下信息:

user: 指该模块只在user版本下才编译

eng: 指该模块只在eng版本下才编译

tests: 指该模块只在tests版本下才编译

optional:指...

并发与并行

并发和并行是即相似又有区别的两个概念,并行是指两个或者多个事件在同一时刻发生;而并发是指两个或多个事件在同一时间间隔内发生。在多道程序环境下,并发性是指在一段时间内宏观上有多个程序在同时运行,但在单处理机系统中,每一时刻却仅能有一道程序执行,故微观上这些程序只能是分时地交替执行。倘若在计算机系统中有多个处理机,则这些可以并发执行的程序便可被分配到多个处理机上,实现并行执行,即利用每个处理机来处理一个可并发执行的程序,这样,多个程序便可以同时执行。

1

23种设计模式简图

源于《设计模式》,主要涉及23种设计模式的UML类图、目标、应用场景、应用实例:


UML类图关系

UML进行比如类图设计关系:

继承Generalization

指的是一个类(称为子类、子接口)继承另外的一个类(称为父类、父接口)的功能,并可以增加它自己的新功能的能力,继承是类与类或者接口与接口之间最常见的关系;在Java中此类关系通过关键字extends明确标识,在设计时一般没有争议性;

实现Realization

指的是一个class类实现interface接口(可以是多个)的功能;实现是类与接口之间最常见的关系;在Java中此类关系通过关键字implements明确标识,在设计时一般没有争议性;

依赖Dependence

可以简单的理解,就是一个类A使用到了另一个类B,而这种使用关系是具有偶然性...

Android handler要点分析


在handler的简单用法中,我们自己简单new出一个handler 然后调用它的sendMessage方法发出一条消息。然后在handler类重写了handler的handlerMessage方法来进行处理。看似就是这么简单的俩步,其实背后隐藏了很多我们不知道的流程。

   在介绍这个之前,我先介绍几个概念

1.Message

这个应该很清楚吧 就是我们发送的消息 介绍一个里面的一个方法Message.obtain函数。作用是从Message Pool中取出一个Message,如果Message Pool中已经没有Message可取则新建一个Message...

Android Handler Message Runnable 区别

Android中,子线程应避免涉及UI的处理,UI的归UI,处理的规处理。因为可能会出现不可预料的错误,这样才是良好的编程风格。


子线程可通过两种方式的Handler与主线程通信:message和Runnable对象

实质都是将在Handler的队列中放入内容,message是放置信息,可以传递一些参数,Handler获取这些信息并将判度如何处理,而Runnable则是直接给出处理的方法。

队列就是依次执行,Handler会处理完一个消息或者执行完某个处理再进行下一步,这样不会出现多个线程同时要求进行UI处理而引发的混乱现象。


这些队列中的内容(无论Message还是Runnable)可以要求马上执行...

Android Handler Runnable

通过Handler类,可以提交和处理Message对象和Runnable对象,这里介绍Runnable对象。

Ruannable对象的run方法可以立刻执行某个操作,也可以在指定时间后执行(也可称为预约执行)。

Handler类主要可以使用如下3个方法来设置执行Runnable对象的时间(时间单位是毫秒):

public final boolean post(Runnable r);                   ...

Anroid Handler Message

通过Handler类,可以提交和处理Message对象和Runnable对象,这里介绍Message对象。


在Android中,线程分为有消息循环的线程和没有消息循环的线程,线程默认没有消息循环。

有消息循环的线程一般都会有一个Looper,这个是android中的新概念。主线程(UI线程)就是一个消息循环的线程。

针对这种消息循环的机制,就要用到Handler,因为Handler可以传递Message对象。


如果要在线程中运行消息循环。必须在线程中先调用prepare()创建一个运行循环;然后调用loop()处理消息直到循环结束。

有消息循环,就要往消息循环里面发送相应的消息,自定义消息一般都会有自己...

Android Handler定义

<一> Handler的定义:


          作用:主要接受子线程发送的数据, 并用此数据配合主线程更新UI.

          解释: 当应用程序启动时,Android首先会开启一个主线程 (也就是UI线程) , 主线程为管理界面中的UI控件,进行事件分发, 比如用户点击一个 Button ,Android会分发事件到Button...

Android Handler

在Application启动后,Android系统会为这个应用创建一主线程(Main Thread),主线程负责把消息分发给相应的UI控件,并处理屏幕绘制事件,因此主线程也称为UI 线程,缺省情况下只有一个Main Thread在运行,如果所有的操作都发生在这个UI线程中,比如一些费时的操作如网络操作,数据库访问将会阻塞UI线程,造成应用程序不响应用户输入,严重的情况Android将显示ANR (应用程序无响应)对应框,强制应用程序退出。所以设计一个及时响应用户的应用的一个基本原则是:永远不要阻塞UI线程,如果你有一些费时的操作,启动一个工作线程(worker thread)来完成。

使用工作线...

Android Animation

目前Android中其实有两种动画,分别是Tween Animation和Frame Animation还有Property Animation

前者是对同一个图像做不同的操作已达到各种动画效果

而后者则是按照设定的顺序在一定时间内播放不同的图片造成的一种动画效果

在这里有一点要注意一下

在Tween Animation中,图像没有真正的改变,例如平移,其实图像是没有动的,你看到的仅仅只是程序的操作

例如本文所讲的的便是调整一个图像的透明度使其有一个简单的渐变动画效果

其中在XML中可以定义4动画效果,如下:

alpha渐变透明度动画效果

scale渐变尺寸伸缩动画效果

translate画面转换位置移动动画效...

include merge ViewStub

include

共享和重用布局文件

merge

可以在没有父容器的时候合并多个独立的布局文件,可以减少布局层次。

ViewStub

在页面显示的时候不加载,在需要时手动加载,从而提高性能。

例:布局文件

<?xml version="1.0" encoding="utf-8"?>

<merge xmlns:android="http://schemas.android.com/apk/res/android">

     <LinearLayout...


自定义View常处理的回调函数

onFinishInflate() 当View中所有的子控件均被映射成xml后触发

onMeasure(int, int) 确定所有子元素的大小

onLayout(boolean, int, int, int, int) 当View分配所有的子元素的大小和位置时触发

onSizeChanged(int, int, int, int) 当view的大小发生变化时触发

onDraw(Canvas) view渲染内容的细节

onKeyDown(int, KeyEvent) 有按键按下后触发

onKeyUp(int, KeyEvent) 有按键按下后弹起...

Android LayoutInflater inflate

LayoutInflater常用于动态载入布局文件,需要使用LayoutInflater.inflate()来载入;


获得 LayoutInflater 实例的三种方式

1. LayoutInflater inflater = getLayoutInflater();//调用Activity的getLayoutInflater() 

2. LayoutInflater inflater = LayoutInflater.from(context);  

3. LayoutInflater inflater =  (LayoutInflater)context...

1 2 3

© UUTON | Powered by LOFTER