以编程方式卸载应用程序:崩溃旋转设备

时间:2014-01-19 17:54:27

标签: java android xml

我正在尝试使用安装在其中的所有应用程序制作列表视图,您可以在其中创建多个卸载应用程序。我有个问题。这是代码。

当我显示对话框时,如果我旋转设备,卸载所选应用程序,则应用程序会因此错误而崩溃。

01-19 18:50:13.571: E/AndroidRuntime(25609): FATAL EXCEPTION: main
01-19 18:50:13.571: E/AndroidRuntime(25609): Process: com.myPackage.name, PID: 25609
01-19 18:50:13.571: E/AndroidRuntime(25609): java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1, result=0, data=null} to activity {com.myPackage.name/com.myPackage.name.class}: java.lang.NullPointerException
01-19 18:50:13.571: E/AndroidRuntime(25609):    at android.app.ActivityThread.deliverResults(ActivityThread.java:3385)
01-19 18:50:13.571: E/AndroidRuntime(25609):    at android.app.ActivityThread.handleSendResult(ActivityThread.java:3428)
01-19 18:50:13.571: E/AndroidRuntime(25609):    at android.app.ActivityThread.access$1300(ActivityThread.java:145)
01-19 18:50:13.571: E/AndroidRuntime(25609):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1254)
01-19 18:50:13.571: E/AndroidRuntime(25609):    at android.os.Handler.dispatchMessage(Handler.java:102)
01-19 18:50:13.571: E/AndroidRuntime(25609):    at android.os.Looper.loop(Looper.java:136)
01-19 18:50:13.571: E/AndroidRuntime(25609):    at android.app.ActivityThread.main(ActivityThread.java:5081)
01-19 18:50:13.571: E/AndroidRuntime(25609):    at java.lang.reflect.Method.invokeNative(Native Method)
01-19 18:50:13.571: E/AndroidRuntime(25609):    at java.lang.reflect.Method.invoke(Method.java:515)
01-19 18:50:13.571: E/AndroidRuntime(25609):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:781)
01-19 18:50:13.571: E/AndroidRuntime(25609):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
01-19 18:50:13.571: E/AndroidRuntime(25609):    at dalvik.system.NativeStart.main(Native Method)
01-19 18:50:13.571: E/AndroidRuntime(25609): Caused by: java.lang.NullPointerException
01-19 18:50:13.571: E/AndroidRuntime(25609):    at com.myPackage.name.class.onActivityResult(myclass.java:91)
01-19 18:50:13.571: E/AndroidRuntime(25609):    at android.app.Activity.dispatchActivityResult(Activity.java:5423)
01-19 18:50:13.571: E/AndroidRuntime(25609):    at android.app.ActivityThread.deliverResults(ActivityThread.java:3381)
01-19 18:50:13.571: E/AndroidRuntime(25609):    ... 11 more

第91行是(int a = 0; a

2 个答案:

答案 0 :(得分:1)

尝试将此内容放在AndroidManifest.xml的定义中的Activity文件中:

android:configChanges="orientation|keyboardHidden|screenSize"

如果设备已旋转,这将阻止您的应用重新启动。

答案 1 :(得分:0)

某些设备配置可能会在运行时更改(例如屏幕方向,键盘可用性和语言)。当发生这样的更改时,Android会重新启动runningActivity(调用onDestroy(),然后调用onCreate())....

要正确处理重新启动,您的活动必须通过正常的Activity生命周期恢复其先前的状态,在此生命周期中Android会在销毁活动之前调用onSaveInstanceState(),以便您可以保存有关应用程序状态的数据。然后,您可以在onCreate()或onRestoreInstanceState()中恢复状态。

如果您的应用程序在特定配置更改期间不需要更新资源,并且您具有要求您避免重新启动活动的性能限制,那么您可以声明您的活动本身处理配置更改,这会阻止系统重新启动你的活动。

你可以使用android:configChanges =“需要的属性放在这里”