当前位置:  编程技术>移动开发
本页文章导读:
    ▪Home键的障蔽        Home键的屏蔽 package com.zzl.home; import android.app.Activity; import android.os.Bundle; import android.view.KeyEvent; import android.view.WindowManager; /** * Home键的屏蔽测试 * Zzl */ public class MainActivity extends Activity { p.........
    ▪ Makefile学习(三)        Makefile学习(3) 今天就学学有关makefile中有关变量的内容(这周偷懒偷懒, 内容比较少)。   1.变量的使用:  变量的命名规则:数字字母下划线,但是不应该含有“:  #  = ”或者空字符(.........
    ▪ Binder机制分析【3】-service绑定Binder       Binder机制分析【三】-service绑定Binder 本章来主要分析Service是如何绑定到Binder的我们从activity调用bindService开始Activity.bindService -> ContextWrapper.bindService -> ContextImpl.bindService -> ActivityManage.........

[1]Home键的障蔽
    来源: 互联网  发布时间: 2014-02-18
Home键的屏蔽
package com.zzl.home;

import android.app.Activity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.WindowManager;
/**
 * Home键的屏蔽测试
 * Zzl
 */

public class MainActivity extends Activity {
	
	private boolean flag = true;//true为屏蔽,false、为不屏蔽
	
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
	@Override
	public void onAttachedToWindow() {
		if(flag) {
			this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);
		}
		super.onAttachedToWindow();
	}

	@Override
	public boolean onKeyDown(int keyCode, KeyEvent event) {
		if(keyCode == KeyEvent.KEYCODE_HOME){
			return true;
		}
		return super.onKeyDown(keyCode, event);
	}
}

    
[2] Makefile学习(三)
    来源: 互联网  发布时间: 2014-02-18
Makefile学习(3)

今天就学学有关makefile中有关变量的内容(这周偷懒偷懒, 内容比较少)。

 

1.变量的使用:

  •  变量的命名规则:数字字母下划线,但是不应该含有“:  #  = ”或者空字符(空格、回车等)
  •                                 变量的大小写敏感
  •  变量在声明时需要付初值,在使用时需要在变量名前加上$符号,最好使用()或者{}将变量给包括起来。
  •  如果需要使用真实的$,那么你需要使用$$表示


2.变量赋值(=       :=     ?=   =+)

 

 

  • “=”:

左侧是变量,右侧是变量的值,右侧变量的值可以定义在文件的任何一处,也就是说,在右侧变量中不一定非要使用已定义好的值,其也可以使用后面定义的值。
eg
foo=$(bar)
bar=$(ugh)
ugh=Huh?
all:
   echo $(foo)

当我们执行 make all 将会打印出变量$(foo)的值“Huh?”

  • “:=”:

左侧是变量,右侧是变量的值,右侧变量的值只能定义在前面
eg
x:=foo
y:=$(x) bar

如果写成下面的样子:
y:=$(x) bar
x:=foo

那么y值只是  bar  而不是  foo  bar

  • ?=

FOO?=bar
其含义是:如果变量FOO没有被定义过,那么变量FOO的值就是bar,如果FOO定义过了,则这条语句什么都不做。等价于
ifeq($(origin FOO),undefined)
    FOO=bar
endif

变量的值作为变量
eg
x=y
y=z
z=u
a:=$($($(x)))

过程如下:
$(x)值y
将y作为变量
$(y)值z
将z作为变量
$(z)值u
所以
S(a)的值为u

复杂一点的例子:
first_second=Hello
a=first
b=second
all=$($a_$b)
过程如下:
$a:first
$b:second
所以
$a_$b组成“first_second”
故$all值为Hello

  • 追加变量

操作符:+=
eg.
objects=main.o  foo.o  bar.o
objects+=another.o
那么$(objects)值为:main.o  foo.o  bar.o  another.o

等价于

objects=main.o  foo.o  bar.o
objects:=$(objects) another.o

注:
如果变量之前没有被定义过,则+=会自动变成=


    
[3] Binder机制分析【3】-service绑定Binder
    来源: 互联网  发布时间: 2014-02-18
Binder机制分析【三】-service绑定Binder
本章来主要分析Service是如何绑定到Binder的
我们从activity调用bindService开始
Activity.bindService ->
ContextWrapper.bindService ->
ContextImpl.bindService ->
ActivityManagerNative.getDefault().bindService(ActivityManagerProxy)->
ActivityManagerService. bindService
requestServiceBindingLocked(r.app.thread.scheduleBindService)-> 
ActivityThread. scheduleBindService
下面简单介绍下ActivityManagerNative,ActivityManagerProxy,ActivityManagerService的关系。这个是通过aidl实现的跨进程通信的基本应用。如第二章例子里面的aidl的实现一样,ActivityManagerNative,ActivityManagerProxy是通过eclipse自动生成的类文件。ActivityManagerNative相当于Stub,ActivityManagerProxy相当于Proxy,ActivityManagerService相当于继承了Stub的MyBinder。所以一般bindService的调用方式是:getDefault()获取ActivityManagerProxy对象,然后调用ActivityManagerProxy的bindService,然后调用mRemote.transact,调到ActivityManagerNative的onTransact,它里面调用bindService调到ActivityManagerService的bindService。
操作:
1. 先从HashMap<IBinder, Service >:mServices里找出目的Service。如下指令:
    Service s = mServices.get(data.token);
2. 执行了onBind()函数,得到myBinder对象。
IBinder binder = s.onBind(data.intent);
3. 在取得binder之后,通过ActivityManagerProxy的publishService方法
ActivityManagerNative.getDefault().publishService(data.token, data.intent, binder);
4. 在该方法内,会通过data.writeStrongBinder(JNI调用)操作C环境,创建myBinder相对的BBinderHolder对象,然后创建一个和java环境交互的BBinder对象。这样就在C环境搭建了一个和java环境交互的接口。下面就该在java环境创建另一个交互接口了。
5. 在ActivityManagerNative中data.readStrongBinder()函数中,在得到C环境的binder对象bpBinder时,会创建一个BinderProxy,并且将bpBinder赋值给BinderProxy的mObject。至此就完成了binder的绑定操作。
Binder整体结构如下图:



Service绑定binder如下图:



参考:http://blog.csdn.net/zhanghw0917/article/details/5629865

    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
▪Android根据电话号码获得联系人头像实例代码
▪Android中GPS定位的用法实例
▪Android实现退出时关闭所有Activity的方法
▪Android实现文件的分割和组装
▪Android录音应用实例教程
▪Android双击返回键退出程序的实现方法
▪Android实现侦听电池状态显示、电量及充电动...
▪Android获取当前已连接的wifi信号强度的方法
▪Android实现动态显示或隐藏密码输入框的内容
▪根据USER-AGENT判断手机类型并跳转到相应的app...
▪Android Touch事件分发过程详解
▪Android中实现为TextView添加多个可点击的文本
▪Android程序设计之AIDL实例详解
▪Android显式启动与隐式启动Activity的区别介绍
▪Android按钮单击事件的四种常用写法总结
▪Android消息处理机制Looper和Handler详解
▪Android实现Back功能代码片段总结
▪Android实用的代码片段 常用代码总结
▪Android实现弹出键盘的方法
▪Android中通过view方式获取当前Activity的屏幕截...
▪Android提高之自定义Menu(TabMenu)实现方法
▪Android提高之多方向抽屉实现方法
▪Android提高之MediaPlayer播放网络音频的实现方法...
▪Android提高之MediaPlayer播放网络视频的实现方法...
▪Android提高之手游转电视游戏的模拟操控
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3