标签: android-framework

使用`onRetainCustomNonConfigurationInstance`来保留跨配置更改的数据

我已经为Android编程了一段时间,我仍在寻找保留数据而不是配置更改的解决方案.除了节约Parcelables到活动的BundleonSaveInstanceState文档使用暗示FragmentsetRetainInstance标志设置为true.

但我刚刚遇到一些onRetainCustomNonConfigurationInstance用于保存任意对象的代码(以一种奇特的方式,但基本上是没有引用的大对象Activity等).我从未见过这种方法,所以我有些疑惑:

  • 这种方法是否可以安全地调用存储任意对象(从某种意义上说,我可以肯定它会被调用,并且它不会很快被弃用/删除)?
  • 这种方法有何不同onRetainNonConfigurationInstance(),也应该返回Object,实质上应该是同样的?
  • 由于某种原因,使用保留片段仍然更好吗?

作为奖励,我将不胜感激任何其他提示或解决方案,以节省状物体的状态AsyncTask,Observable,视图的主持人,并继续

android android-framework android-activity android-fragmentactivity

23
推荐指数
1
解决办法
6530
查看次数

在没有合格用户错误的情况下调用系统进程中的方法

我在android 4.4中使用通知监听器服务,我遇到一个错误,导致我的应用程序停止发布通知.

这是相当随机的,但当它发生时,我看到:

12-31 01:40:44.080  21680-21680/? W/ContextImpl? Calling a method in the system process without a qualified user: 
android.app.ContextImpl.sendOrderedBroadcast:1192 
android.app.ContextImpl.sendOrderedBroadcast:1183       
android.content.ContextWrapper.sendOrderedBroadcast:390 
com.android.settings.applications.ProcessStatsDetail.checkForceStop:314 
com.android.settings.applications.ProcessStatsDetail.onResume:108
Run Code Online (Sandbox Code Playgroud)

在日志中.我甚至可以通过在手机上输入开发者工具的"过程统计数据"部分来重新创建它.一旦我选择了一个使用通知监听器的应用程序,就会发出此警告并取消绑定并销毁该服务,并且当它重新创建时,它并不总是会再次接收事件.

我不确定为什么会发生这种情况,任何人都可以解雇吗?

android android-framework

19
推荐指数
1
解决办法
4万
查看次数

Eclipse中的Android框架调试

我正在开发一个项目,我正在对android框架源进行更改.在Eclipse中执行此操作并且能够调试的最佳方法是什么?我已经看过在Eclipse中附加android源代码的帖子,但这是'标准'源代码,而不是我自己的版本.

目前我只是在文本编辑器中对框架进行更改,并且每次都通过命令行进行构建,从命令行运行模拟器并启动adb logcat会话以查看是否有任何异常,但必须有另一个(更高效/可行的方式来做到这一点?

android android-source android-framework

12
推荐指数
1
解决办法
4180
查看次数

使用dexpreopt禁用构建单独的Android模块

对于我的论文,我正在修改android框架并构建源代码(4.1.1 Jelly Bean).我可以做一个完整的构建,但因为这是非常耗时的(我正在开发一个ubuntu 12.04 64位虚拟机)我想构建单独的模块.

例如:在对位置模块进行更改时,应该可以只构建已更改的模块,并创建一个新的系统映像:

mmm frameworks/base
make snod
Run Code Online (Sandbox Code Playgroud)

但这不起作用.每次我尝试启动时,新的系统映像都将无法启动,因为:

I/dalvikvm( 1696): DexOpt: mismatch dep signature for '/system/framework/framework.odex'
Run Code Online (Sandbox Code Playgroud)

经过一些研究,我试图用环境变量禁用dexpreopt

export $WITH_DEXPREOPT=false 
Run Code Online (Sandbox Code Playgroud)

export $DISABLE_DEXPREOPT=true 
Run Code Online (Sandbox Code Playgroud)

并使用'make installclean'进行完全重建.完全重建工作,并且构建中存在对框架的更改.但在做了一个新的改变之后,仍然是'mmm frameworks/base'和'make snod'导致dexpreopt不匹配.

来自'make snod'的build/core/makefile也会发出警告:'警告:启用dexpreopt,你可能需要一个完整的重建.',它来自makefile中的这一行:

ifeq (true,$(WITH_DEXPREOPT))
$(warning Warning: with dexpreopt enabled, you may need a full rebuild.)
endif
Run Code Online (Sandbox Code Playgroud)

这让我相信$ WITH_DEXPREOPT变量没有正确设置或读取?到目前为止,在没有进行干净的完全重建的情况下,我无法获得可引导的系统映像.我遵循的程序是否正确禁用dexpreopt,或者在更改框架并获取新的系统映像后是否还有其他方法来构建单独的模块?

构建目标是'full-eng'.

android android-build android-source android-framework

10
推荐指数
1
解决办法
8859
查看次数

Android密钥处理(框架)

框架的某些部分对我来说还不是很清楚.我熟悉输入事件的流程(内核 - > Eventhub - > InputReader - > InputDispatcher - > ...).

情况

(要求:在不更改Android框架的情况下处理输入键.) 我想处理来自设备(键盘/游戏手柄/控制器/ ...)的关键事件,但有一些要求.首先,我不想改变Android框架.这意味着,我不想扩展WindowManagerPolicy其功能,例如interceptKeyBeforeDispatching处理主键的功能.这将导致将键事件分派到应用程序层中,这很好.缺点是,我在这里有另一个棘手的要求.示例:当我在玩"愤怒的小鸟"时,我按下连接的输入设备上的GoToAlpha按钮,Alpha应用程序必须启动.愤怒的小鸟不知道哪个按钮GoToAlpha是,不会处理/识别它,并且例如没有广播的意图来启动我的Alpha应用程序.

有没有办法在调度后处理我的(自定义)键事件,知道前台的应用程序无法处理密钥?

我的(失败的)解决方案

  • 创建一个处理关键事件的服务.这是不可能的,因为像愤怒的小鸟这样的应用程序不会绑定到我的服务,并且关键事件不会被我的服务捕获.如果我错了,请提供更多信息:).

  • 创建一个外部库,我允许我的应用程序的活动从我自己的ActivityBase继承.所有关键事件和默认行为都可以在这里处理.在下方,现有应用程序将不支持我的自定义键事件,因为它们不使用库.

  • 扩展框架在我看来是最干净的解决方案,但这将导致不符合我的要求.

任何帮助或有用的信息将不胜感激

额外

如果第一个问题可以通过这种或那种方式解决..我想Intent在GoToAlpha按钮后面自定义我.这意味着..默认情况下,Alpha应用程序将启动,但在用户自定义之后,Beta应用程序将从现在开始启动..有什么想法吗?

谢谢

android key-events android-framework

8
推荐指数
1
解决办法
4996
查看次数

Android设备如何获得开发人员的公钥?

安卓系统要求所有安装的应用程序与它的私钥由应用程序的开发者举办的证书进行数字签名.公钥如何具体分发到客户端Android设备?当开发者发布应用程序时,apk中是否包含公钥?如果是这样,密钥存储在哪里?

Android市场,例如谷歌播放,是否拥有开发者ID列表以及相应的公钥,并在下载应用程序时将右键推送到客户端设备?

有没有文件传达这些信息?

非常感谢任何投入.

android certificate public-key android-framework

8
推荐指数
1
解决办法
6253
查看次数

"太多属性引用"警告

我有一个应用程序,其中一些片段只包含ListViews.我的一些低端设备用户会遇到一种现象,即片段根本无法显示数据.当他们进入片段时,我会显示一个ProgressBar,而这个ProgressBar似乎永远旋转.

所以我买了一台低端设备,面临同样的问题.我通过网络请求获取ListView的数据到我的后端API,但答案永远不会返回.我到目前为止唯一的警告是

W/ResourceType? Too many attribute references, stopped at: 0x01010034
Run Code Online (Sandbox Code Playgroud)

我在网上找不到这个错误,但似乎这个警告记录在这里https://github.com/SciAps/android-frameworks-base/blob/c693209edc3696884c1fcd59790dda0b9811d017/libs/utils/ResourceTypes.cpp#L1573 ,但我不明白Android代码在那里做什么.

任何人都知道这里发生了什么,问题是什么以及我如何解决这个问题?

顺便说一句,我使用RoboSpice和Retrofit来做网络请求.在此警告之后停止负责获取数据的后台服务,这就是我永远不会收回数据的原因.

编辑据我所知,没有看到数据与警告无关.无论如何,这个警告意味着什么,我该如何预防呢?

android android-layout android-framework

8
推荐指数
2
解决办法
4221
查看次数

无法解析API文件"frameworks/base/api/current.txt"

我尝试在Android框架中添加一些文件.一切顺利,除了在编译结束时,我遇到了错误.

我也试过make update-api,但没有运气,每次编译它都会给出以下错误.如果有人知道如何解决这个问题,请告诉我.

Docs droiddoc: out/target/common/docs/doc-comment-check
Checking API: checkapi-last
Checking API: checkapi-current
host layoutlib_create: out/host/common/obj/JAVA_LIBRARIES/temp_layoutlib_intermediates/javalib.jar
Couldn't parse API file "frameworks/base/api/current.txt"
  ...as text: com.google.doclava.apicheck.ApiParseException: missing class or interface. got: private line 6342
  ...as XML:  com.google.doclava.apicheck.ApiParseException: Error parsing API
Couldn't parse API file "out/target/common/obj/PACKAGING/public_api.txt"
  ...as text: com.google.doclava.apicheck.ApiParseException: missing class or interface. got: private line 6342
  ...as XML:  com.google.doclava.apicheck.ApiParseException: Error parsing API
Exception in thread "main" java.lang.NullPointerException
    at com.google.doclava.apicheck.ApiCheck.checkApi(ApiCheck.java:118)
    at com.google.doclava.apicheck.ApiCheck.main(ApiCheck.java:67)

******************************
You have tried to change the API from what has been …
Run Code Online (Sandbox Code Playgroud)

android android-source android-framework android-make

7
推荐指数
1
解决办法
1万
查看次数

Android:如何将解码器集成到多媒体框架中

最近我已经成功地将视频解码器移植到了android.还将输出转储到surfaceview上并使用本机API检查输出.现在,下一个任务是实现播放,暂停,流媒体等,即媒体播放器的其他功能.这样做将是一个返工,因为所有这些功能已经在android多媒体框架中定义.我听说我们可以将解码器作为插件,并将其集成到Android的多媒体框架中.虽然我用谷歌搜索相同的,我几乎找不到任何关于相同的信息.所以我请求任何读者为上述问题提出一些相关链接或解决方案.提前致谢,等待您的回复.

android android-ndk android-framework stagefright android-mediaplayer

7
推荐指数
1
解决办法
1万
查看次数

在AOSP App中添加一个android项目作为库

我想通过从另一个Android应用程序启动一个活动,在浏览器应用程序中添加一些功能.package does not exist在我制作主项目时它给了我.请注意,我看到AndroidLib已成功构建到out/target/product/generic/data/app/AndroidLib.apk

这里有两个android.mk文件:AndroidLib(一个普通的Android应用程序)

LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)

LOCAL_STATIC_JAVA_LIBRARIES := \
        google-ps \
        android-support-v4 \

LOCAL_SRC_FILES := \
        $(call all-java-files-under, src) \
LOCAL_MODULE := AndroidLib
LOCAL_PACKAGE_NAME := AndroidLib

LOCAL_MODULE_TAGS := tests

LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := google-ps:libs/google-play-services.jar

include $(BUILD_PACKAGE)

# additionally, build tests in sub-folders in a separate .apk
include $(call all-makefiles-under,$(LOCAL_PATH))
Run Code Online (Sandbox Code Playgroud)

浏览器应用

LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)

LOCAL_MODULE_TAGS := optional

LOCAL_STATIC_JAVA_LIBRARIES := \
        android-common \
        guava \
        android-support-v13 \
        android-support-v4 \

LOCAL_SRC_FILES := \
        $(call all-java-files-under, src) …
Run Code Online (Sandbox Code Playgroud)

android android-ndk android-build android-source android-framework

7
推荐指数
1
解决办法
9907
查看次数