2014-05-29 4 views
0

У меня есть приложение для Android, которое отлично работает. Но когда я пытаюсь очистить память, а затем попытаюсь открыть ее, она выйдет из строя и выдаст исключение NullPointerException в нескольких местах. Я знаю, что когда пользователь очищает память, андроид очищает все переменные и sharedPreferences. Теперь мой вопрос заключается в том, как мы можем знать, когда пользователь очищает оперативную память в настройках телефона.Сбой приложения для Android после освобождения оперативной памяти

enter image description here

Здесь представлен LogCat

05-29 15:34:19.813: E/AndroidRuntime(4932): FATAL EXCEPTION: main 
05-29 15:34:19.813: E/AndroidRuntime(4932): java.lang.RuntimeException: Unable to start   activity ComponentInfo{com.softwaysolutions.rcommunication/com.softwaysolutions.rcommunication.MainActivity}: java.lang.NullPointerException 
05-29 15:34:19.813: E/AndroidRuntime(4932):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2088) 
05-29 15:34:19.813: E/AndroidRuntime(4932):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2113) 
05-29 15:34:19.813: E/AndroidRuntime(4932):  at android.app.ActivityThread.access$700(ActivityThread.java:139) 
05-29 15:34:19.813: E/AndroidRuntime(4932):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1224) 
05-29 15:34:19.813: E/AndroidRuntime(4932):  at android.os.Handler.dispatchMessage(Handler.java:99) 
05-29 15:34:19.813: E/AndroidRuntime(4932):  at android.os.Looper.loop(Looper.java:137) 
05-29 15:34:19.813: E/AndroidRuntime(4932):  at android.app.ActivityThread.main(ActivityThread.java:4918) 
05-29 15:34:19.813: E/AndroidRuntime(4932):  at java.lang.reflect.Method.invokeNative(Native Method) 
05-29 15:34:19.813: E/AndroidRuntime(4932):  at java.lang.reflect.Method.invoke(Method.java:511) 
05-29 15:34:19.813: E/AndroidRuntime(4932):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1004) 
05-29 15:34:19.813: E/AndroidRuntime(4932):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:771) 
05-29 15:34:19.813: E/AndroidRuntime(4932):  at dalvik.system.NativeStart.main(Native Method) 
05-29 15:34:19.813: E/AndroidRuntime(4932): Caused by: java.lang.NullPointerException 
05-29 15:34:19.813: E/AndroidRuntime(4932):  at com.softwaysolutions.rcommunication.NowPlayingFragment.startMyAACService(NowPlayingFragment.java:378) 
05-29 15:34:19.813: E/AndroidRuntime(4932):  at com.softwaysolutions.rcommunication.NowPlayingFragment.onCreateView(NowPlayingFragment.java:112) 
05-29 15:34:19.813: E/AndroidRuntime(4932):  at android.support.v4.app.Fragment.performCreateView(Fragment.java:1500) 
05-29 15:34:19.813: E/AndroidRuntime(4932):  at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:927) 
05-29 15:34:19.813: E/AndroidRuntime(4932):  at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1104) 
05-29 15:34:19.813: E/AndroidRuntime(4932):  at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1086) 
05-29 15:34:19.813: E/AndroidRuntime(4932):  at android.support.v4.app.FragmentManagerImpl.dispatchActivityCreated(FragmentManager.java:1884) 
05-29 15:34:19.813: E/AndroidRuntime(4932):  at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:566) 
05-29 15:34:19.813: E/AndroidRuntime(4932):  at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1178) 
05-29 15:34:19.813: E/AndroidRuntime(4932):  at android.app.Activity.performStart(Activity.java:5058) 
05-29 15:34:19.813: E/AndroidRuntime(4932):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2061) 
05-29 15:34:19.813: E/AndroidRuntime(4932):  ... 11 more 

Спасибо заранее.

+0

Logcat пожалуйста .. –

+0

Каковы конкретные места? – nhaarman

+0

Отправьте свой код, где у вас есть авария –

ответ

1

Я проверил там и дело в том, что я пытаюсь доступ к глобальному значению,

Вы должны сохранить все свои данные в onSavedInstanceState и восстановить его на onRestoreInstanceState.

+0

Привет @ArtemStorozhuk, спасибо за решение. Я следил за этим уроком, и это сработало. http://developer.android.com/training/basics/activity-lifecycle/recreating.html – Ramesh

1

По вашему трассировку стека исключений:

Ваша активность очищается ОС из памяти и объект внутри фрагмента становится NULL,

Убедитесь, что вы используете onSavedInstanceState для сохранения экземпляра и onRestoreInstanceState для восстановления экземпляра.

https://stackoverflow.com/a/41018096/4903773

Смежные вопросы