分类 Android 下的文章

JNI----java平台的一个特性


JNI----java平台的一个特性

JNI——Java Native Interface,它是Java平台的一个特性(并不是Android系统特有的)。其实主要是定义了一些JNI函数,让开发者可以通过调用这些函数实现Java代码调用C/C++的代码,C/C++的代码也可以调用Java的代码,这样就可以发挥各个语言的特点了。那么怎么使用JNI呢,一般情况下我们首先是将写好的C/C++代码编译成对应平台的动态库(windows一般是dll文件,linux一般是so文件等),

###创建一个NDK程序
1.首先新建一个项目的时候要勾选

  • include c++ support
    如果是第一次,则会要求下载NDK


binder浅析


进程之间的消息本是隔离的,如果需要通信,在Android里面,可以通过Binder通信机制;在Linux中访问内核的某些程序可以通过系统调用来进行。
四大组件的底层通信机制也是基于Binder的,我们需要知道每个组件中,分别是哪些类扮演了Binder Client,哪些类扮演了Binder Server。知道这些概念,有助于我们App开发人员进行插件化编程。

关于Binder的文章实在是太多了,每篇文章都能从Java层讲到C++层,App开发人员其实是没必要了解这么多内容的。我们看对App开发有用的几个点:

1)首先,Binder分为Client和Server两个进程。

注意,Client和Server是相对的。谁发消息,谁就是Client,谁接收消息,谁就是Server。


Handler的sendEmptyMessageDelay()和sendEmptyMessage()的区别


基础

  • Handler:作用就是发送与处理信息,如果希望Handler正常工作,在当前线程中要有一个Looper对象
  • Message:Handler接收与处理的消息对象
  • MessageQueue:消息队列,先进先出管理Message,在初始化Looper对象时会创建一个与之关联的MessageQueue;
  • Looper:每个线程只能够有一个Looper,管理MessageQueue,不断地从中取出Message分发给对应的Handler处理!

  • sendEmptyMessageDelayed(int what,long delayMillis):指定延时多少毫秒后发送空信息

  • sendMessageDelayed(Message msg):指定延时多少毫秒后发送信息

两者都是android.os.Handler下的方法

public final boolean sendEmptyMessageDelayed(int what,long delayMillis)

Sends a Message containing only the what value, to be delivered after the specified amount of time elapses.


shijiebei 365bet manbetx 188bet xinshui caipiao 95zz tongbaoyule beplay 88bifa 18luck betway bwin hg0088 aomenjinshayulecheng ca88 shenbotaiyangcheng vwin w88 weide