- 浏览: 157089 次
- 性别:
- 来自: 深圳
最新评论
-
dawei1980:
请问,解压密码是多少?
Android本地APP集成Mui框架 -
牧羊之人:
Android本地APP集成Mui框架 -
还有也许:
貌似懂了一点。如果onCreate方法中创建了一个db,然后在 ...
Android线程模式(handler,thread,looper) -
chenshijun0101:
header里面怎么更改他的样式呢?急求
android Preference相关样式修改 -
qlraishui:
good
Binder机制分析【三】-service绑定Binder
文章列表
android3.0及以上动画分析
- 博客分类:
- android
ValueAnimator简介
ValueAnimator属于property animation
Propertity Animation类似于 tween动画,区别在于ValueAnimator修改的是真实属性。
在Android 3.0中给View增加了一些参数并对这些参数增加了相应的getter/setter函数(ObjectAnimator要用这些函数改变这些属性):
• translationX,translationY:转换坐标(control where the View is located as a delta from its left and top coordi ...
开关机动画及图片修改
- 博客分类:
- android
开机动画开关
system/core/rootdir/etc/init.goldfish.sh
setprop debug.sf.nobootanimation 0
mediatek\custom\taibo13_gb\system\bootanim\bootanimation
mediatek\custom\taibo13_gb\system\bootanim\shutanimation
第一二张图片位置
\mediatek\custom\common\uboot\logo\wvga\wvga_kernel.bmp
\medi ...
//java DateFormat
String help[] = {
"To use this program, enter a time value",
"in the top text field, and a SimpleDateFormat",
"format specifier in the second text field,",
"then click on the Format button. Results",
...
其实,IoC主要分为2步:
1.控制反转-反向控制。以往的开发过程中,都是应用程序去调用系统的接口方法,比如调用系统library,这种做法的特点是,控制权掌握在应用程序手中。而控制反转就是在系统框架中,已经定义好了具体的操作模式,应用只需要实现部分借口就可以,所以这个控制流程掌握在框架手中。
与反向控制相对的是正向控制,如子类调用父类的方法,实现类调用系统库函数等
举例:
android中的框架中ActivityThread等已经定义好了activity的生命周期函数的执行顺序,而应用程序做的就是给这些个生命周期函数进行实现填充,控制权掌握在android手中。
2.依赖注入。实现组件间关系从 ...
package lab.sodino.menutest;
import android.content.Context;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.util.AttributeSet;
import android.view.InflateException;
import android.view.LayoutInflater;
import android.view.Menu;
import android. ...
// 比如说在button的onclick事件中,要发送一个ontouch的up事件,做法如下:
public void clickBtn(View v){
dispatchTouchEvent.(MotionEvent.obtain(SystemClock.uptimeMillis(),SystemClock.uptimeMillis(), MotionEvent.ACTION_UP, 240, 400, 0));
}
// 期中该btn的onclick事件是在xml里面注册的
<Button android:layout_width = "wrap_conten ...
术语和概念
屏幕尺寸
屏幕的物理尺寸,以屏幕的对角线长度作为依据(比如 2.8寸, 3.5寸)。
简而言之, Android把所有的屏幕尺寸简化为三大类:大,正常,和小。
程序可以针对这三种尺寸的屏幕提供三种不同的布局方案,然 ...
联系人存储包括两个位置:SIM卡和手机上,在查找过程中要分别判断。
手机上存储位置在/data/data/com/android.providers.contacts/databases。
1 判断是否存储在手机上(CallDetailActivity)
Uri personUri = null;
Uri phoneUri = Uri.withAppendedPath(PhoneLookup.CONTENT_FILTER_URI,
Uri.encode(mNumber));
...
Activity.managedQuery()
获取一个包含指定数据的 Cursor 对象,并由 Activity 来接管这个 Cursor 的生命周期。
首先该函数通过调用 getContentResolver().query(uri, projection, selection, selectionArgs, sortOrder) 获取一个包含指定数据(由 query 方法的参数指定)的 Cursor 对象。
然后通过调用 startManagingCursor(c) 实现由 Activity 来接管返回的 Cursor c 的生命周期。
原型:
public final Cursor m ...
这种实现很简单,主要步骤如下:
1.定义自己的Exception类,该类继承自UncaughtExceptionHandler,复习其方法uncaughtException,在该方法实现强制退出
2.在你的应用中设置自定义异常
exception = new MyUncaughtExceptionHandler(this);
Thread.setDefaultUncaughtExceptionHandler(exception);
可以定义在Application中
3.抛出异常
具体的实现可参照如下附件:
ActivityManagerService
主要包含三个功能:Activity管理,进程管理(activity在退出时,其所在的进程不会被停止,这样可以提高下次的启动速度,只有系统内存不够时,才会被自动杀死),内存管理
主要包含重要数据:都是形如XXXRecord的数据,如ProcessRecord(apk进程管理),HistoryRecord(activity管理,本身是Binder,和IPC进行交互),TaskRecord(Activity的启动和退出顺序管理,task不直接接触activity,在task变化时,是通过HistoryRecord对TaskRecord的引用实现)
1. ...
Binder系统组件
由第一章知道,Binder系统由3部分组成,client,server,binder驱动。
其中server由两部分组成:server和Service Manager,因为Service Manager是一种特殊的server,所以也将其划分到了server中,Service Manager是一个守护进程,用来管理Server,并向Client提供查询Server接口的能力。
1.Client、Server和Service Manager实现在用户空间中,Binder驱动程序实现在内核空间中
2. Binder驱动程序和Service Manager在Android平台中已 ...
本章来主要分析Service是如何绑定到Binder的
我们从activity调用bindService开始
Activity.bindService ->
ContextWrapper.bindService ->
ContextImpl.bindService ->
ActivityManagerNative.getDefault().bindService(ActivityManagerProxy)->
ActivityManagerService. bindService
requestServiceBindingLocked(r.app.thread.s ...
前一章说了下Binder机制的实现分析,这章就主要通过实际的例子来看看,具体的服务端创建。一般而言,同一个进程里的沟通称之为短程沟通,进程间的沟通称之为远程沟通,短程沟通的效率远高于远程沟通,但是Android提供的Binder机制就提供了高效率的远程沟通。
下面通过Activity与Service之间的沟通为例,列举出2种实现方式。
例子一:通过直接继承Binder实现
1. 实现Binder类
public class MyBinder extends Binder {
private Context mContext;
public MyBinder(Context context ...
在 Android 框架裡,一個應用套件(Application Package)通常含有多個Java 類(Class),這些類可以在同一個進程(Process)裡執行;也可以在不同的進程裡執行。
每一個進程在誕生時,都會誕生一個主線程(Main Thread),以及誕生一個Looper類的對象和一個MQ(Message Queue)資料結構。每當主線程作完事情,就會去執行Looper類。此時,不斷地觀察MQ的動態。
主線程最主要的工作就是處理UI畫面的事件(Event),每當UI事件發生時,Android框架會丟信息(Message)到MQ裡。主線程看到MQ有新的信息時,就取出信息,然後依據信 ...