从后台

时间:2016-07-27 16:47:51

标签: java android

我的静态值在我的应用程序很长时间在后台或打开许多不同的应用程序后被删除,导致我的应用程序崩溃。 我认为Android操作系统正在从我的应用程序中移除数据或者#34;杀死"它。 有没有办法保持我的应用程序的数据,以避免这个问题?

注意:我无法在SharedPreferences或数据库中保存此值,因为有很多HashMapsArrayLists,信息太多。 这些值必须是静态的,因为我需要在我的应用程序的许多类中随时使用它们。

E/AndroidRuntime: FATAL EXCEPTION: main
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.proyect/com.proyect.gui.ActivityMenu}: java.lang.NullPointerException: println needs a message
 at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2266)
 at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2316)
 at android.app.ActivityThread.access$600(ActivityThread.java:150)
 at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1298)
 at android.os.Handler.dispatchMessage(Handler.java:99)
 at android.os.Looper.loop(Looper.java:213)
 at android.app.ActivityThread.main(ActivityThread.java:5225)
 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:741)
 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557)
 at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException: println needs a message
 at android.util.Log.println_native(Native Method)
 at android.util.Log.v(Log.java:117)
 at com.proyect.gui.FragmentMenu.onActivityCreated(FragmentMenu.java:145)
 at android.support.v4.app.Fragment.performActivityCreated(Fragment.java:1983)
 at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1092)
 at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1252)
 at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1234)
 at android.support.v4.app.FragmentManagerImpl.dispatchActivityCreated(FragmentManager.java:2046)
 at android.support.v4.app.FragmentController.dispatchActivityCreated(FragmentController.java:174)
 at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:597)
 at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1171)
 at android.app.Activity.performStart(Activity.java:5143)
 at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2239)
 at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2316) 
 at android.app.ActivityThread.access$600(ActivityThread.java:150) 
 at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1298) 
 at android.os.Handler.dispatchMessage(Handler.java:99) 
 at android.os.Looper.loop(Looper.java:213) 
 at android.app.ActivityThread.main(ActivityThread.java:5225) 
 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:741) 
 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557) 
 at dalvik.system.NativeStart.main(Native Method) 

1 个答案:

答案 0 :(得分:0)

改变这个:

Log.v("errorTag", e.getMessage());

对此:

String error = e.getMessage();
if(error == null)
    error = "It's crashed here";
Log.v("errorTag", error );

或SIMPLER

Log.v("errorTag", e );

重点是e.getMessage()为null。因此,在打印之前,请始终检查e.getMessage()是否为null