Welcome 微信登录

首页 / 操作系统 / Linux

Android开发:IBinder对象在进程间传递的形式

Android开发:IBinder对象在进程间传递的形式

命题 当service经常被远程调用时,我们常常用到aidl来定一个接口供service和client来使用,这个其实就是使用Binder机制的IPC通信。当client bind service成功之后,系统AM会调用回调函数onServiceConnected将service的IBinder传递给client, client再通过调用aidl生成的asInterface()方法获得service的调用接口,此时一个bind过程结束了,我们在clien...
Android系统在新进程中启动自定义服务过程(startService)的原理分析

Android系统在新进程中启动自定义服务过程(startService)的原理分析

在编写Android应用程序时,我们一般将一些计算型的逻辑放在一个独立的进程来处理,这样主进程仍然可以流畅地响应界面事件,提高用户体验。Android系统为我们提供了一个Service类,我们可以实现一个以Service为基类的服务子类,在里面实现自己的计算型逻辑,然后在主进程通过startService函数来启动这个服务。在本文中,将详细分析主进程是如何通过startService函数来在新进程中启动自定义服务的。在主进程调用startService函数...
简析Android对Linux内核的改动

简析Android对Linux内核的改动

现在Android已经很火了,我的一个哥们儿上个月找到一个Android应用开发的职位,月薪就有6K了,羡慕啊。这里分析下Android的内核结构,主要介绍Android和Linux之间的关系,以备以后可能的转型。大家都知道Android是基于Linux内核的操作系统,也曾经和Linux基金会因为内核问题产生过分歧。 虽然Android基于Linux内核,但是它与Linux之间还是有很大的差别,比如Android在Linux内核的基础上添加了自己所特有...
MagicARM2410上的U-Boot移植 终于搞定DM9000

MagicARM2410上的U-Boot移植 终于搞定DM9000

原先没有做过U-boot的移植,现在感觉这一步还是通一下比较好,就决定移植一个试试。我手头的板子是学校的周立功MagicARM2410,原先上面有周立功的bootloader(应该也是U-boot),但是只有一个bin文件,不提供源码(很不厚道的说)。开发环境就是我的虚拟机Vmware Workstation ACE版+Fedora12+esroot。相关阅读:U-Boot源代码下载地址 http://www.linuxidc.com/Linux/2011...
Qt网络获取本机网络信息

Qt网络获取本机网络信息

下面本来该讲解UDP和TCP了。不过,在讲解它们之前,我们先在这一节里讲解一个以后要经常用到的名词,那就是IP地址。对于IP地址,其实,会上网的人都应该听说过它。如果你实在很不了解它,那么我们简单的说:IP即Internet Protocol (网络之间互联的协议),协议就是规则,地球人都用一样的规则,所以我们可以访问全球任何的网站;而IP地址就是你联网时分配给你机子的一个地址。如果把网络比喻成地图,那IP地址就像地图上的经纬度一样,它确定了你的主机在网络...
Linux下另类内存缓冲池设计(CBufferPool)

Linux下另类内存缓冲池设计(CBufferPool)

本文所说的缓冲池的构建与一般的开辟一个大的内存,需要申请内存时就直接在该大内存中再划分出小内存出来使用不同,CBufferPool使用的是队列链表,程序按出队/入队的方式对内存进行读写.设计该类的目的是因为在需求中,我有一个写入线程和一个读取线程,读取线程会挨个读取写入线程写入的数据,于是想到使用队列,按先入先出的方式可以顺序读取已写入的数据,由于考虑到可能需要动态增加队列的大小,故采用了环形链表形式的队列.第一个问题解决,即决定了所要使用的数据结构--环...
Android Launcher——UI框架

Android Launcher——UI框架

这是我正在研究的一个800*480的launcher的ui框架图,对应的桌面显示效果如下:下面一行应用是我修改桌面后的结果,在前面我的ui框架图中没有。闲话不多说,下面就一一做出讲解1.DragLayer--DragLayer继承FrameLayout,并在此基础上组合了DragController实现拖放功能,DragLayer主要监听下面两个用户事件onInterceptTouchEventonTouchEvent交给DragController进行处...
Android workspace分析

Android workspace分析

在Workspace.Java类实现,相关方法有:1) computeScroll():重写了父类的computeScroll();主要功能是计算拖动的位移量、更新背景、设置要显示的屏幕(setCurrentScreen(mCurrentScreen);)。2) dispatchDraw():重写了父类的dispatchDraw();主要功能是判断抽屉是否打开、绘制指定的屏幕,可以绘制当前一屏,也可以绘制当前屏幕和下一屏幕,也可以绘制所有的屏幕,这儿的绘制...
Android开发学习 : 多点触摸

Android开发学习 : 多点触摸

其实多点触摸并没有想象中的那么神奇。处理2个手指一般就已经够用,放上3个手指显得有点滑稽,依赖更多手指进行操作绝对不是一个好的主意。 理论上 Android可以处理 多达256 个手指的触摸,大概只有章鱼哥能享受这种技术带来的便利。就编程人员来说,编写多点触摸和单点触摸的方式几乎一模一样。其奥秘在于MotionEvent不仅可以封装单点触摸的消息,也可以封装多点触摸的消息。在处理单点触摸中,我们用到MotionEvent.ACTION_DOWN、ACTIO...
Android对图片的压缩读取和保存

Android对图片的压缩读取和保存

在开发图片浏览器等软件是,很多时候要显示图片的缩略图,而一般情况下,我们要将图片按照固定大小取缩略图,一般取缩略图的方法是使用BitmapFactory的decodeFile方法,然后通过传递进去 BitmapFactory.Option类型的参数进行取缩略图,在Option中,属性值inSampleSize表示缩略图大小为原始图片大小的几分之一,即如果这个值为2,则取出的缩略图的宽和高都是原始图片的1/2,图片大小就为原始大小的1/4。 然而,如果我...
基于 Android NDK 的学习之旅-----Java 调用C

基于 Android NDK 的学习之旅-----Java 调用C

随便谈谈为什么要Java调用C 吧:我认为:1、 有些公司开发Android项目的时候, 许多组件功能可能是C中已经实现了,所以我们没必要同样的功能又在java中实现一遍。例如我之前做的一个项目,公司C引擎已经很成熟了,所以直接在java中封装好接口,由C去实现。2、 C的速度一般是java的10-20倍把,有些对速度要求高的就需要在C中实现。例如我以前在Android项目中有要求批量(10000++)生成MD5的值,由于测试对java中直接生成的效果不满...
<< 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320 >>