Java 如果由于解析异常被“后退”按钮破坏,Android应用程序将崩溃
在我的Java 如果由于解析异常被“后退”按钮破坏,Android应用程序将崩溃,java,android,exception,parse-platform,runtime-error,Java,Android,Exception,Parse Platform,Runtime Error,在我的onCreate()方法中,我按照文档中的建议初始化解析库: // Init Parse and enable Local Datastore. ParseObject.registerSubclass(AlertObject.class); Parse.enableLocalDatastore(this); Parse.initialize(this, getString(R.string.parse_app_id), getString(R.string.par
onCreate()
方法中,我按照文档中的建议初始化解析库:
// Init Parse and enable Local Datastore.
ParseObject.registerSubclass(AlertObject.class);
Parse.enableLocalDatastore(this);
Parse.initialize(this, getString(R.string.parse_app_id),
getString(R.string.parse_client_key));
但是,如果我按下后退按钮(因此应用程序被停止并销毁),然后从“上次使用的应用程序”菜单中单击应用程序以恢复应用程序,它将崩溃并引发以下异常:
java.lang.RuntimeException: Unable to start activity ComponentInfo{my.app.pro/my.app.MainActivity}: java.lang.IllegalStateException: `Parse#enableLocalDatastore(Context)` must be invoked before `Parse#initialize(Context)`
[...]
本质上,它建议在initialize()
之前调用enableLocalDatastore()
当然,如果我重写onBackPressed()
方法,如下所示:
@Override
public void onBackPressed() {
moveTaskToBack(true);
}
问题解决了,因为应用程序没有被破坏。但是,为什么在默认行为中会出现该异常?尝试将解析初始化移动到应用程序类的onCreate
方法。如果没有,您可以创建一个从应用程序
扩展的类,例如:
public class AppAplication extends Application {
@Override
public void onCreate() {
super.onCreate();
ParseObject.registerSubclass(AlertObject.class);
Parse.enableLocalDatastore(this);
Parse.initialize(this, getString(R.string.parse_app_id), getString(R.string.parse_client_key));
}
}
并在AndroidManifest.xml
文件中写入您正在使用自己的应用程序对象,将android:name
属性添加到
标记中。例如:
<application
android:name=".AppApplication"
>
太好了,它可以工作!非常感谢你!您是否认为最好同时移动应用程序类中的其他库初始化(例如,Facebook、Google API等)?是的,将所有只需执行一次的初始化都移动到那里。我遇到了同样的问题,此解决方案也可以工作。伟大的谢谢!!