java.lang.IllegalStateException: AssetManager 已经完成
java.lang.IllegalStateException: AssetManager has been finalized
我昨天睡觉时我的应用程序还在运行,今天当我尝试 运行 它根本无法启动。我一尝试打开它就崩溃了 java.lang.IllegalStateException
。我已经在我的代码中进行了几次提交,只是为了排除这是我最近所做的事情。这毫无意义,一个应用程序怎么能在一夜之间停止工作呢?我在互联网上查找错误,但没有太多有用的信息。这真的是一个奇怪的错误吗?
这是完整的堆栈跟踪:
E/AndroidRuntime: FATAL EXCEPTION: main
java.lang.IllegalStateException: AssetManager has been finalized!
at android.os.Parcel.readException(Parcel.java:1439)
at android.os.Parcel.readException(Parcel.java:1385)
at android.app.ActivityManagerProxy.startActivity(ActivityManagerNative.java:1947)
at android.app.Instrumentation.execStartActivity(Instrumentation.java:1419)
at android.app.Activity.startActivityForResult(Activity.java:3390)
at android.app.Activity.startActivity(Activity.java:3583)
at com.android.launcher2.Launcher.startActivity(Launcher.java:2442)
at com.android.launcher2.Launcher.startActivitySafely(Launcher.java:2469)
at com.android.launcher2.AppsCustomizePagedView.onClick(AppsCustomizePagedView.java:584)
at android.view.View.performClick(View.java:4240)
at android.view.View$PerformClick.run(View.java:17721)
at android.os.Handler.handleCallback(Handler.java:730)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5136)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)
因为就像我说的那样,这似乎不是我所做的任何事情,所以我不确定 post 的代码是什么。但是鉴于应用程序在启动时崩溃,这里是应该首先启动的两个主要 类 的代码:
应用程序
public class App extends Application {
private static App instance;
private static final String TAG = "Starter";
@Override
public void onCreate() {
super.onCreate();
instance = this;
// Enable Local Datastore.
Parse.enableLocalDatastore(this);
//TODO: Register subclasses
// ParseObject.registerSubclass(Challenge.class);
//Parse server
Log.d(TAG, "Initializing Parse");
Parse.initialize(new Parse.Configuration.Builder(this)
.applicationId(getString(R.string.parse_app_id))
.clientKey(getString(R.string.parse_client_key))
.server(getString(R.string.server_address)).build()
);
//Facebook
if (AccessToken.getCurrentAccessToken() == null)
ParseFacebookUtils.initialize(this);
ParseUser.enableAutomaticUser();
ParseACL defaultACL = new ParseACL();
// Optionally enable public read access.
defaultACL.setPublicReadAccess(true);
defaultACL.setPublicWriteAccess(true);
ParseACL.setDefaultACL(defaultACL, true);
Log.d(TAG, "Parse ready");
}
public static App getInstance(){
return instance;
}
}
SplashActivity
public class SplashActivity extends AppCompatActivity {
private static final String TAG = "Splash";
private boolean firstTime = true;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Hide title bar
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_splash);
firstTime = getSharedPreferences(Constants.GENERAL_SHARED_PREFS, MODE_PRIVATE)
.getBoolean(Constants.FIRSTTIME, true);
if (isLoggedIn())
if (firstTime)
startActivity(new Intent(SplashActivity.this, FirstTimeActivity.class));
else
startActivity(new Intent(SplashActivity.this, MenuActivity.class));
else {
Log.d(TAG, "Calling Home");
startActivity(new Intent(SplashActivity.this, WelcomeActivity.class));
finish();
}
}
@Override
protected void onResume() {
super.onResume();
}
@Override
protected void onPause() {
super.onPause();
}
@Override
protected void onDestroy() {
super.onDestroy();
}
public boolean isLoggedIn() {
AccessToken accessToken = AccessToken.getCurrentAccessToken();
String parseSession = ParseUser.getCurrentUser().getSessionToken();
return parseSession != null;
}
}
AOSP 中的堆栈跟踪链接 to this class。
我认为这次崩溃 与您的应用程序无关 ,而是启动器 class 中的一个错误。尝试从 USB 调试安装,看看是否可行。
但是还有一些细节是模糊的。这些行是(从堆栈跟踪的底部到顶部)在 com.android.launcher2 包中引起问题的行:
从这个错误来看,我假设您使用的是 Nexus 或 Pixel(或任何具有 未更改源代码 ,即库存 android 的设备)。
从这个错误中我可以看出,这不是与您的应用相关的错误。您使用的启动器似乎有问题。尝试从 USB 调试安装,或更改启动器,看看是否可行。也尝试重新启动您的设备。
此外,根据我对您代码的了解,没有可打包的 classes 在使用中
当 Instant 运行 与 Android 模拟器失去连接时也可能导致此错误模拟器。
运行再次安装应用程序将解决问题。
我昨天睡觉时我的应用程序还在运行,今天当我尝试 运行 它根本无法启动。我一尝试打开它就崩溃了 java.lang.IllegalStateException
。我已经在我的代码中进行了几次提交,只是为了排除这是我最近所做的事情。这毫无意义,一个应用程序怎么能在一夜之间停止工作呢?我在互联网上查找错误,但没有太多有用的信息。这真的是一个奇怪的错误吗?
这是完整的堆栈跟踪:
E/AndroidRuntime: FATAL EXCEPTION: main java.lang.IllegalStateException: AssetManager has been finalized! at android.os.Parcel.readException(Parcel.java:1439) at android.os.Parcel.readException(Parcel.java:1385) at android.app.ActivityManagerProxy.startActivity(ActivityManagerNative.java:1947) at android.app.Instrumentation.execStartActivity(Instrumentation.java:1419) at android.app.Activity.startActivityForResult(Activity.java:3390) at android.app.Activity.startActivity(Activity.java:3583) at com.android.launcher2.Launcher.startActivity(Launcher.java:2442) at com.android.launcher2.Launcher.startActivitySafely(Launcher.java:2469) at com.android.launcher2.AppsCustomizePagedView.onClick(AppsCustomizePagedView.java:584) at android.view.View.performClick(View.java:4240) at android.view.View$PerformClick.run(View.java:17721) at android.os.Handler.handleCallback(Handler.java:730) at android.os.Handler.dispatchMessage(Handler.java:92) at android.os.Looper.loop(Looper.java:137) at android.app.ActivityThread.main(ActivityThread.java:5136) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:525) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) at dalvik.system.NativeStart.main(Native Method)
因为就像我说的那样,这似乎不是我所做的任何事情,所以我不确定 post 的代码是什么。但是鉴于应用程序在启动时崩溃,这里是应该首先启动的两个主要 类 的代码:
应用程序
public class App extends Application {
private static App instance;
private static final String TAG = "Starter";
@Override
public void onCreate() {
super.onCreate();
instance = this;
// Enable Local Datastore.
Parse.enableLocalDatastore(this);
//TODO: Register subclasses
// ParseObject.registerSubclass(Challenge.class);
//Parse server
Log.d(TAG, "Initializing Parse");
Parse.initialize(new Parse.Configuration.Builder(this)
.applicationId(getString(R.string.parse_app_id))
.clientKey(getString(R.string.parse_client_key))
.server(getString(R.string.server_address)).build()
);
//Facebook
if (AccessToken.getCurrentAccessToken() == null)
ParseFacebookUtils.initialize(this);
ParseUser.enableAutomaticUser();
ParseACL defaultACL = new ParseACL();
// Optionally enable public read access.
defaultACL.setPublicReadAccess(true);
defaultACL.setPublicWriteAccess(true);
ParseACL.setDefaultACL(defaultACL, true);
Log.d(TAG, "Parse ready");
}
public static App getInstance(){
return instance;
}
}
SplashActivity
public class SplashActivity extends AppCompatActivity {
private static final String TAG = "Splash";
private boolean firstTime = true;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Hide title bar
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_splash);
firstTime = getSharedPreferences(Constants.GENERAL_SHARED_PREFS, MODE_PRIVATE)
.getBoolean(Constants.FIRSTTIME, true);
if (isLoggedIn())
if (firstTime)
startActivity(new Intent(SplashActivity.this, FirstTimeActivity.class));
else
startActivity(new Intent(SplashActivity.this, MenuActivity.class));
else {
Log.d(TAG, "Calling Home");
startActivity(new Intent(SplashActivity.this, WelcomeActivity.class));
finish();
}
}
@Override
protected void onResume() {
super.onResume();
}
@Override
protected void onPause() {
super.onPause();
}
@Override
protected void onDestroy() {
super.onDestroy();
}
public boolean isLoggedIn() {
AccessToken accessToken = AccessToken.getCurrentAccessToken();
String parseSession = ParseUser.getCurrentUser().getSessionToken();
return parseSession != null;
}
}
AOSP 中的堆栈跟踪链接 to this class。
我认为这次崩溃 与您的应用程序无关 ,而是启动器 class 中的一个错误。尝试从 USB 调试安装,看看是否可行。
但是还有一些细节是模糊的。这些行是(从堆栈跟踪的底部到顶部)在 com.android.launcher2 包中引起问题的行:
从这个错误来看,我假设您使用的是 Nexus 或 Pixel(或任何具有 未更改源代码 ,即库存 android 的设备)。
从这个错误中我可以看出,这不是与您的应用相关的错误。您使用的启动器似乎有问题。尝试从 USB 调试安装,或更改启动器,看看是否可行。也尝试重新启动您的设备。
此外,根据我对您代码的了解,没有可打包的 classes 在使用中
当 Instant 运行 与 Android 模拟器失去连接时也可能导致此错误模拟器。
运行再次安装应用程序将解决问题。