问题标签 [android-runtime]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - 如何停止当前正在执行的命令
我想开始使用start
按钮保存我的应用程序的日志并使用stop
. 该addLog
按钮用于查看是否有更多行被添加到log.txt
文件中。该start
按钮可以正常工作,但问题是它永远不会以stop
. 即使按下stop
,当我按下addLog
按钮并检查log.txt
文件时,我看到最后一行已添加。我有什么错?
我需要启动流,关闭此活动并参观其他活动,然后返回并关闭伐木机。
android - Android 运行时和 Android 原生接口
根据 wiki ( http://en.wikipedia.org/wiki/Android_Runtime),Dalvik完全被 Lollipop 中的 ART 取代,即从该版本开始,任何应用程序都将在安装时编译为本机代码。这就引出了一个问题,如果应用程序无论如何都会被编译为本机代码,那么在 NDK 中编写计算密集型例程是否有意义?
android - 在焦点 EditText 上关闭 VM?
我遇到了一个特殊的问题。
在我的对话框中,我有一个 EditText,当我关注它时,键盘出现并输入第一个单词,但我的应用程序长时间没有响应,直到我关闭它。
这是我的显示对话框功能代码:
我的purchase_view.xml
:
注意:加载一个 URL 的 web 视图,它有几个文本输入。
注意:我在显示对话框之前和之后也使用此代码,但我的问题没有解决:
我的Logcat
错误:
提前致谢。
android - ART中的Android自修改代码
我正在尝试使用 JNI 在我的 Android 应用程序中实现自修改代码。
我的应用程序的 MainActivity 类中有以下方法:
这是此方法的字节码:
这就是该方法在 classes.dex 文件中的表示方式:
13 00 2A 00 0F 00
methodToModify
我的目标是从本机代码更改运行时方法的返回值。所以,这是实现自修改代码的 JNI 方法的算法:
读取进程内存(这里有更多关于了解 Linux /proc/id/maps的信息):
FILE *fp; fp = fopen("/proc/self/maps", "r");
检测 .dex 文件(或 .oat 文件在 ART 的情况下)的开始和结束地址:
while (fgets(line, 2048, fp) != NULL) { // search for 'dex' or 'oat' if (strstr(line, ".oat") != NULL || strstr(line, ".dex") != NULL) // get starting and ending addresses of the DEX file region
methodToModify
在 .dex 或 .oat 文件中查找字节。使用
mprotect
函数设置写入文件的权限。修改返回值方法。
我的问题是,这种方法在我的 Nexus 7 和 Android 4.2 上完美运行,但在 Nexus 5 和 Android 5.1 上不起作用。我可以用 Dalvik 实现自我修改代码,但我不能用 ART 做同样的事情。
那么,是否可以用 ART 实现自修改代码呢?
android - 覆盖调试版本的 android:vmSafeMode 属性
/system/bin/dex2oat
在尝试优化调试应用程序的构建和部署速度时,我发现在安装过程中执行了大量时间。这是ART 提前编译器。
我发现当面向 API 22 时,您现在可以停止 ART AOT 编译:
我看到部署速度显着提高,但我担心进行此更改可能产生的副作用。它必须对运行时性能造成小的影响,但启用该android:vmSafeMode
选项是否有任何其他后果?
是否可以在 gradle 构建文件中为调试构建覆盖此属性?还是创建一个调试特定的清单文件是唯一的解决方案?
java - android.widget.FrameLayout$LayoutParams 无法转换为 android.widget.AbsListView$LayoutParams
还有其他相关问题,但它们没有解决我的情况(它们的错误代码与某种回收和/或客户端代码的错误转换调用有关)。
我的情况比较复杂。
我有一些代码,用户可以在其中提取照片库。
问题是,它在我拥有的 7 部手机上运行良好,都运行 API 19+。
但是我有一个运行 API 17 的 Google Nexus 4.3。我得到了这个崩溃日志,其中没有我的代码,只有库代码。如果您能建议我如何编写工作代码,我会全神贯注:
更新
我的违规课程是这样的:
我正在使用 Ultimate Image Loader 库,这是使用上述类的代码。
android - 通过 ART 与 DVM 对 Android 应用程序的安装时间验证
与 DVM 相比,DVM 对 android App 执行什么样的安装时间验证,以及 ART 引入了什么样的更严格的验证。
android - Android 垃圾收集器释放内存
我正在开发一个处理大量分配的应用程序(大约 400 万个双打和 100 万个类)。我正在查看垃圾收集器日志,我看到不同设备释放的内存总量不同。
例如,我有一个 Moto X (2014),它最终释放了超过 312 MB。我还有一个 Droid Bionic 在相同的数据上运行相同的代码,平均释放 616 MB。两种设备最终的堆大小约为 50 MB。
为什么 Bionic 上的 GC 释放的内存比 Moto X 多得多?它们应该各自产生相同数量的垃圾。垃圾收集器的幕后发生了什么?Moto X 运行的是 Android 5.1,而 Bionic 运行的是 4.1.2。
编辑:我有四台设备正在释放大约 300 MB RAM:Moto X (2014)、Nexus 7 2013、Nexus 7 2012 和 Razr i。所有这四个都使用ART。Bionic 正在运行 Dalvik 运行时。这就是释放较少的原因吗?我注意到 GC_FOR_ALLOC 不会在 ART 中发生,但在 Dalvik 上一直被调用。
android - 什么是 Android 中的 ART 和 DART
简而言之,什么是 ART(Android 运行时)和 Android 中的 DART,我在这里读到了它,但我并不真正了解它的重要性和用法。
在我询问之前,我还在 Stackoverflow 中搜索了任何相关问题。