建议结合demo来看 native-activity

都是Activity,NativeActivity也继承于Activity,生命周期也是是完整的,但是不同于普通的activity, 在于:

  1. NativeActivity 会主动加载配置在mainfest android.app.lib_name 上的so, 加载代码见:
try {ai = getPackageManager().getActivityInfo(getIntent().getComponent(), PackageManager.GET_META_DATA);if (ai.metaData != null) {String ln = ai.metaData.getString(META_DATA_LIB_NAME);if (ln != null) libname = ln;ln = ai.metaData.getString(META_DATA_FUNC_NAME);if (ln != null) funcname = ln;}
} catch (PackageManager.NameNotFoundException e) {throw new RuntimeException("Error getting activity info", e);
}BaseDexClassLoader classLoader = (BaseDexClassLoader) getClassLoader();
String path = classLoader.findLibrary(libname);if (path == null) {throw new IllegalArgumentException("Unable to find native library " + libname +" using classloader: " + classLoader.toString());
}byte[] nativeSavedState = savedInstanceState != null? savedInstanceState.getByteArray(KEY_NATIVE_SAVED_STATE) : null;mNativeHandle = loadNativeCode(path, funcname, Looper.myQueue(),getAbsolutePath(getFilesDir()), getAbsolutePath(getObbDir()),getAbsolutePath(getExternalFilesDir(null)),Build.VERSION.SDK_INT, getAssets(), nativeSavedState,classLoader, classLoader.getLdLibraryPath());if (mNativeHandle == 0) {throw new UnsatisfiedLinkError("Unable to load native library \"" + path + "\": " + getDlError());
}
  1. 会接管的surface
getWindow().takeSurface(this);
  1. 会接管的输入事件的队列
getWindow().takeInputQueue(this);
  1. 通过loadNativeCode把app的上下文构造进去

ndk中携带了一个 android_native_app_glue 的胶水层,负责把app的上下文、传感器、输入事件传递下去。

NativeActivity相关推荐

  1. android activity使用,android,NativeActivity使用

    android现在已经支持C/C++ NativeActivity开发 android提供 头文件.所以你要使用的话,要引入这个头文件 1,NativeActivity 入口 入口函数是void AN ...

  2. WF4.0:NativeActivity中的错误处理

    备注:这篇文章的使用环境是.NET framework 4.0 RC 1 在WF4中创建native活动时,NativeActivity是非常强大的.其众多的功能之一是围绕错误处理. 调度子活动的时的 ...

  3. android用java_原来android不是只能用java写软件

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 We released the first version of the Native Development Kit, a development to ...

  4. 【转】Android Activity原理以及其子类描述,androidactivity

        Android Activity原理以及其子类描述,androidactivity 简介 Activity是Android应用程序组件,实现一个用户交互窗口,我们可以实现布局填充屏幕,也可以实 ...

  5. 工作流-----WorkFlow

    我们都知道对于一个OA系统来说,最重要的也是不可或缺的一个重要环节那就是对于工作流的实现,为此,最近专门在学习如何使用WorkFlow,问前辈,前辈也说道K2工作流引擎挺不错,自己同时也翻阅了一些资料 ...

  6. WF4.0进行单元测试

    本文通过举例说明在WF4.0中如何进行单元测试. 1.简单的WF4.0活动测试 如果是一个简单的WF4.0活动,是那种没有带BookMark,也不是messaging活动,也不是长时间运行的活动.使用 ...

  7. WF4.0 基础篇 (十八) Flowchar

    本节主要介绍WF4 中 Flowchart的使用 本文例子下载: http://files.cnblogs.com/foundation/FlowcharSample.rar 本文例子说明 Flowc ...

  8. rn+与android+交互,React native 与Android原生交互方式(一)

    前言## 最近在做React Native开发的时候避免不了的需要原生模块和JS之间进行交互,其实RN和原生的通信大致分为两种情况:一种是Android主动向RN端发送事件和数据,另外一种是RN端被动 ...

  9. android系统的测试方法,运行测试  |  Android 开源项目  |  Android Open Source Project...

    本页将介绍如何在 Linux 和 Windows 环境中运行 deqp 测试.如何使用命令行参数,以及如何使用 Android 应用包. Linux 与 Windows 环境 首先,请将以下文件及目录 ...

最新文章

  1. springboot后台怎么获取前端传过来的excel_开源商城系统包含后台管理和手机端
  2. 重学java基础第二十三课:java基础 注释
  3. shiro 基于springmvc中做登陆功能
  4. 基于Socket的.NET应用组件
  5. 如何在Mac OS X上安装 Ruby运行环境
  6. Foobar2000自用插件
  7. 蒙特卡洛—赌博模型笔记
  8. js计算当前周数及每周具体日期、每月的第一个周一
  9. ASP.NET课设——新闻发布系统
  10. RealMedia Analyzer(mp4修复软件)v0.30绿色版
  11. R语言使用timeROC包计算无竞争情况下的生存资料多时间AUC值、使用cox模型、并添加协变量、可视化无竞争情况下的生存资料多时间ROC曲线
  12. vsphere 添加 iscsi 存储设备
  13. setdbprefs matlab,matlab数据导入与导出
  14. java 热键_定义自己的热键
  15. 【MFC】使用TabControl创建Tab分页
  16. Java开发(七)for循环语句
  17. 疲劳驾驶检测系统的研究
  18. jsp+servlet学子商城项目--servlet、dao层的各项练习
  19. rust刷卡点地图_新版rust地图物资 | 手游网游页游攻略大全
  20. 【Windows】windows10 更新到1903后 vmware14/15 无法启动解决方法

热门文章

  1. java实现 xls转xlsx
  2. 语音对话控制智能家居系统
  3. 滴水三期:day04.3-标志寄存器
  4. 汇编———标志(flag)寄存器
  5. Linux 安装Oracle10g
  6. B端产品的特点及开发经验
  7. 数据科学-描述性统计
  8. Python 实现Ridge Regression教程
  9. 记录自学编程的博客 -2019年
  10. java webservice应用总结