android 中Bn 和Bp的区别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android 中Bn 和Bp的区别相关的知识,希望对你有一定的参考价值。

Bn意味着Binder Native 端
Bp是Binder Proxy端,
这两端会实现相同的接口,但Proxy端只是通过binder ipc发送一个binder transaction,
native端是真正做事情,再将结果返回。
android用此机制实现高效的远程调用。
参考技术A Android中实现view的更新有两组方法,一组是invalidate,另一组是postInvalidate,其中前者是在UI线程自身中使用,而后者在非UI线程中使用。
Android提供了Invalidate方法实现界面刷新,但是Invalidate不能直接在线程中调用,因为他是违背了单线程模型:Android UI操作并不是线程安全的,并且这些操作必须在UI线程中调用。

  Android程序中可以使用的界面刷新方法有两种,分别是利用Handler和利用postInvalidate()来实现在线程中刷新界面。

1,利用invalidate()刷新界面
  实例化一个Handler对象,并重写handleMessage方法调用invalidate()实现界面刷新;而在线程中通过sendMessage发送界面更新消息。

// 在onCreate()中开启线程

new Thread(new GameThread()).start();、

// 实例化一个handler

Handler myHandler = new Handler()
// 接收到消息后处理
public void handleMessage(Message msg)
switch (msg.what)
case Activity01.REFRESH:
mGameView.invalidate(); // 刷新界面
break;


super.handleMessage(msg);

;

class GameThread implements Runnable
public void run()
while (!Thread.currentThread().isInterrupted())
Message message = new Message();
message.what = Activity01.REFRESH;
// 发送消息
Activity01.this.myHandler.sendMessage(message);
try
Thread.sleep(100);
catch (InterruptedException e)
Thread.currentThread().interrupt();

BN和L2 NORM的区别

bn是拉平各个feature的差异,而l2 norm是拉平各个样本的差异,本来各个样本的模长千变万化,按照距离的概念,差别是很大的,但是l2 norm后,距离就变得有一个上界了,显然样本间差异变小了。而对于各个feature,本来各个feature的量级都可能不一样,方差也就不一样,bn让方差为1,均值为0(理论上),各个feature的差异就小了, l2 norm并没有改变feature之间的相对大小。 l2 norm是强行把同个维度的特征归一化。batch norm是把不同维度的去均值归一化, l2 norm是自己对自己,所以除以的值不尽相同,batch norm是基于统计全局,所以均值和方差每个样本都是相同值。  对于不同layer输出的concat,还是l2 norm比较合适 。

以上是关于android 中Bn 和Bp的区别的主要内容,如果未能解决你的问题,请参考以下文章

Android.bp 语法和使用

Android.bp快速入门

[ Android 编译 ] Android.bp 根据条件添加宏定义

找不到类“com.google.android.gms.internal.bn$b”

Android.bp学习

Android.bp学习