gpt4 book ai didi

android - BootstrapApplication 无法转换为 ApplicationClass

转载 作者:太空狗 更新时间:2023-10-29 16:13:33 25 4
gpt4 key购买 nike

我正在运行 Android Studio 2.0 版的新稳定版本。当我禁用即时运行时,我的应用程序运行良好,但当我打开它时,它会给我这个错误:

Caused by: java.lang.ClassCastException: com.android.tools.fd.runtime.BootstrapApplication cannot be cast to com.my.app.CustomApplication

CustomApplication 是我通过上下文获得的应用程序类。但我似乎无法得到它。当即时运行打开时,我的类被转换为 BootstrapApplication 然后失败。

我的应用是一个 float 服务,就像 FB 聊天头。

我有最新的 gradle 构建:

classpath 'com.android.tools.build:gradle:2.0.0'

这里的其他答案说即时运行试图对代码进行热交换;这会导致应用程序类被移动。

那么我该如何解决这个问题呢?

最佳答案

解决方案 #1- 禁用 Instant run在设置中

解决方案 #2 - 使用反射从 BootstrapApplication 获取真正的应用程序

public static CustomApplication getRealApplication (Context applicationContext)
{
CustomApplication application = null;

if (applicationContext instanceof CustomApplication)
{
application = (CustomApplication) applicationContext;
}
else
{
Application realApplication = null;
Field magicField = null;
try
{
magicField = applicationContext.getClass().getDeclaredField("realApplication");
magicField.setAccessible(true);
realApplication = (Application) magicField.get(applicationContext);
}
catch (NoSuchFieldException e)
{
Log.e(TAG, e.getMessage());
}
catch (IllegalAccessException e)
{
Log.e(TAG, e.getMessage());
}

application = (CustomApplication) realApplication;
}

return application;
}

在某处使用:

    Context applicationContext = getContext().getApplicationContext();
CustomApplication application = getRealApplication(applicationContext);

使用示例:

public class MyProvider extends OrmLiteProvider<OrmLiteSqliteOpenHelper, OrmLiteUriMatcher<OrmLiteMatcherEntry>>
{
@Override
protected OrmLiteSqliteOpenHelper createHelper ()
{
Context applicationContext = getContext().getApplicationContext();
CustomApplication application = CustomApplication.getRealApplication(applicationContext);
return application.getComponent().databaseHelper();
}

...

}

关于android - BootstrapApplication 无法转换为 ApplicationClass,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36495954/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com