{"action":"opened","issue":{"url":"https://api.github.com/repos/murraycu/android-galaxyzoo/issues/21","labels_url":"https://api.github.com/repos/murraycu/android-galaxyzoo/issues/21/labels{/name}","comments_url":"https://api.github.com/repos/murraycu/android-galaxyzoo/issues/21/comments","events_url":"https://api.github.com/repos/murraycu/android-galaxyzoo/issues/21/events","html_url":"https://github.com/murraycu/android-galaxyzoo/issues/21","id":74643751,"number":21,"title":"Crash with CONNECTIVITY_CHANGE: \"Error receiving broadcast Intent\"","user":{"login":"murraycu","id":52274,"avatar_url":"https://avatars.githubusercontent.com/u/52274?v=3","gravatar_id":"","url":"https://api.github.com/users/murraycu","html_url":"https://github.com/murraycu","followers_url":"https://api.github.com/users/murraycu/followers","following_url":"https://api.github.com/users/murraycu/following{/other_user}","gists_url":"https://api.github.com/users/murraycu/gists{/gist_id}","starred_url":"https://api.github.com/users/murraycu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/murraycu/subscriptions","organizations_url":"https://api.github.com/users/murraycu/orgs","repos_url":"https://api.github.com/users/murraycu/repos","events_url":"https://api.github.com/users/murraycu/events{/privacy}","received_events_url":"https://api.github.com/users/murraycu/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":0,"created_at":"2015-05-09T10:30:39Z","updated_at":"2015-05-09T10:30:39Z","closed_at":null,"body":"A user reported this crash on Android 5.0 with version 1.45 after classifying 5 subjects. It looks like it was triggered by a change of network connectivity.\r\n\r\n<pre>\r\njava.lang.RuntimeException: Error receiving broadcast Intent { act=android.net.conn.CONNECTIVITY_CHANGE flg=0x4000010 (has extras) } in com.murrayc.galaxyzoo.app.g@2505d2ff\r\nat android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:872)\r\nat android.os.Handler.handleCallback(Handler.java:739)\r\nat android.os.Handler.dispatchMessage(Handler.java:95)\r\nat android.os.Looper.loop(Looper.java:135)\r\nat android.app.ActivityThread.main(ActivityThread.java:5254)\r\nat java.lang.reflect.Method.invoke(Native Method)\r\nat java.lang.reflect.Method.invoke(Method.java:372)\r\nat com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:898)\r\nat com.android.internal.os.ZygoteInit.main(ZygoteInit.java:693)\r\nCaused by: java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState\r\nat android.support.v4.app.FragmentManagerImpl.void checkStateLoss()(Unknown Source)\r\nat android.support.v4.app.FragmentManagerImpl.void throwException(java.lang.RuntimeException)(Unknown Source)\r\n                                              android.support.v4.app.FragmentTransaction beginTransaction()\r\n                                              void putFragment(android.os.Bundle,java.lang.String,android.support.v4.app.Fragment)\r\n                                              android.support.v4.app.Fragment getFragment(android.os.Bundle,java.lang.String)\r\n                                              void dump(java.lang.String,java.io.FileDescriptor,java.io.PrintWriter,java.lang.String[])\r\n                                              android.view.animation.Animation makeOpenCloseAnimation(android.content.Context,float,float,float,float)\r\n                                              android.view.animation.Animation makeFadeAnimation(android.content.Context,float,float)\r\n                                              android.view.animation.Animation loadAnimation(android.support.v4.app.Fragment,int,boolean,int)\r\n                                              void performPendingDeferredStart(android.support.v4.app.Fragment)\r\n                                              void moveToState(android.support.v4.app.Fragment,int,int,int,boolean)\r\n                                              void moveToState(int,boolean)\r\n                                              void moveToState(int,int,int,boolean)\r\n                                              void addFragment(android.support.v4.app.Fragment,boolean)\r\n                                              void removeFragment(android.support.v4.app.Fragment,int,int)\r\n                                              android.support.v4.app.Fragment findFragmentById(int)\r\n                                              android.support.v4.app.Fragment findFragmentByTag(java.lang.String)\r\n                                              void enqueueAction(java.lang.Runnable,boolean)\r\n                                              int allocBackStackIndex(android.support.v4.app.BackStackRecord)\r\n                                              void setBackStackIndex(int,android.support.v4.app.BackStackRecord)\r\n                                              boolean popBackStackState(android.os.Handler,java.lang.String,int,int)\r\n                                              void restoreAllState(android.os.Parcelable,java.util.ArrayList)\r\n                                              void attachActivity(android.support.v4.app.FragmentActivity,android.support.v4.app.FragmentContainer,android.support.v4.app.Fragment)\r\n                                              void dispatchConfigurationChanged(android.content.res.Configuration)\r\n                                              boolean dispatchCreateOptionsMenu(android.view.Menu,android.view.MenuInflater)\r\n                                              boolean dispatchPrepareOptionsMenu(android.view.Menu)\r\n                                              boolean dispatchOptionsItemSelected(android.view.MenuItem)\r\n                                              android.view.View onCreateView(android.view.View,java.lang.String,android.content.Context,android.util.AttributeSet)\r\nat android.support.v4.app.BackStackRecord.void dump(java.lang.String,java.io.FileDescriptor,java.io.PrintWriter,java.lang.String[])(Unknown Source)\r\n                                          void dump(java.lang.String,java.io.PrintWriter,boolean)\r\n                                          void addOp(android.support.v4.app.BackStackRecord$Op)\r\n                                          android.support.v4.app.FragmentTransaction add(int,android.support.v4.app.Fragment,java.lang.String)\r\n                                          void doAddOp(int,android.support.v4.app.Fragment,java.lang.String,int)\r\n                                          android.support.v4.app.FragmentTransaction replace(int,android.support.v4.app.Fragment)\r\n                                          android.support.v4.app.FragmentTransaction hide(android.support.v4.app.Fragment)\r\n                                          void bumpBackStackNesting(int)\r\n                                          int commit()\r\n                                          int commitInternal(boolean)\r\n                                          void setFirstOut(android.util.SparseArray,android.support.v4.app.Fragment)\r\n                                          void calculateBackFragments(android.util.SparseArray,android.util.SparseArray)\r\n                                          android.support.v4.app.BackStackRecord$TransitionState popFromBackStack(boolean,android.support.v4.app.BackStackRecord$TransitionState,android.util.SparseArray,android.util.SparseArray)\r\n                                          android.support.v4.app.BackStackRecord$TransitionState beginTransition(android.util.SparseArray,android.util.SparseArray,boolean)\r\n                                          java.lang.Object getEnterTransition(android.support.v4.app.Fragment,boolean)\r\n                                          java.lang.Object getSharedElementTransition(android.support.v4.app.Fragment,android.support.v4.app.Fragment,boolean)\r\n                                          java.lang.Object captureExitingViews(java.lang.Object,android.support.v4.app.Fragment,java.util.ArrayList,android.support.v4.util.ArrayMap,android.view.View)\r\n                                          android.support.v4.util.ArrayMap remapSharedElements(android.support.v4.app.BackStackRecord$TransitionState,android.support.v4.app.Fragment,boolean)\r\n                                          boolean configureTransitions(int,android.support.v4.app.BackStackRecord$TransitionState,boolean,android.util.SparseArray,android.util.SparseArray)\r\n                                          void prepareSharedElementTransition(android.support.v4.app.BackStackRecord$TransitionState,android.view.View,java.lang.Object,android.support.v4.app.Fragment,android.support.v4.app.Fragment,boolean,java.util.ArrayList)\r\n                                          void callSharedElementEnd(android.support.v4.app.BackStackRecord$TransitionState,android.support.v4.app.Fragment,android.support.v4.app.Fragment,boolean,android.support.v4.util.ArrayMap)\r\n                                          void setEpicenterIn(android.support.v4.util.ArrayMap,android.support.v4.app.BackStackRecord$TransitionState)\r\n                                          android.support.v4.util.ArrayMap mapSharedElementsIn(android.support.v4.app.BackStackRecord$TransitionState,boolean,android.support.v4.app.Fragment)\r\n                                          android.support.v4.util.ArrayMap remapNames(java.util.ArrayList,java.util.ArrayList,android.support.v4.util.ArrayMap)\r\n                                          void excludeHiddenFragmentsAfterEnter(android.view.View,android.support.v4.app.BackStackRecord$TransitionState,int,java.lang.Object)\r\n                                          void excludeHiddenFragments(android.support.v4.app.BackStackRecord$TransitionState,int,java.lang.Object)\r\n                                          void setNameOverride(android.support.v4.util.ArrayMap,java.lang.String,java.lang.String)\r\n                                          void setNameOverrides(android.support.v4.app.BackStackRecord$TransitionState,java.util.ArrayList,java.util.ArrayList)\r\n                                          void setBackNameOverrides(android.support.v4.app.BackStackRecord$TransitionState,android.support.v4.util.ArrayMap,boolean)\r\n                                          android.support.v4.util.ArrayMap access$000(android.support.v4.app.BackStackRecord,android.support.v4.app.BackStackRecord$TransitionState,boolean,android.support.v4.app.Fragment)\r\n                                          void access$100(android.support.v4.app.BackStackRecord,android.support.v4.util.ArrayMap,android.support.v4.app.BackStackRecord$TransitionState)\r\n                                          void access$200(android.support.v4.app.BackStackRecord,android.support.v4.app.BackStackRecord$TransitionState,android.support.v4.app.Fragment,android.support.v4.app.Fragment,boolean,android.support.v4.util.ArrayMap)\r\n                                          void access$300(android.support.v4.app.BackStackRecord,android.support.v4.app.BackStackRecord$TransitionState,int,java.lang.Object)\r\nat android.support.v4.app.BackStackRecord.void dump(java.lang.String,java.io.FileDescriptor,java.io.PrintWriter,java.lang.String[])(Unknown Source)\r\n                                          void dump(java.lang.String,java.io.PrintWriter,boolean)\r\n                                          void addOp(android.support.v4.app.BackStackRecord$Op)\r\n                                          android.support.v4.app.FragmentTransaction add(int,android.support.v4.app.Fragment,java.lang.String)\r\n                                          void doAddOp(int,android.support.v4.app.Fragment,java.lang.String,int)\r\n                                          android.support.v4.app.FragmentTransaction replace(int,android.support.v4.app.Fragment)\r\n                                          android.support.v4.app.FragmentTransaction hide(android.support.v4.app.Fragment)\r\n                                          void bumpBackStackNesting(int)\r\n                                          int commit()\r\n                                          int commitInternal(boolean)\r\n                                          void setFirstOut(android.util.SparseArray,android.support.v4.app.Fragment)\r\n                                          void calculateBackFragments(android.util.SparseArray,android.util.SparseArray)\r\n                                          android.support.v4.app.BackStackRecord$TransitionState popFromBackStack(boolean,android.support.v4.app.BackStackRecord$TransitionState,android.util.SparseArray,android.util.SparseArray)\r\n                                          android.support.v4.app.BackStackRecord$TransitionState beginTransition(android.util.SparseArray,android.util.SparseArray,boolean)\r\n                                          java.lang.Object getEnterTransition(android.support.v4.app.Fragment,boolean)\r\n                                          java.lang.Object getSharedElementTransition(android.support.v4.app.Fragment,android.support.v4.app.Fragment,boolean)\r\n                                          java.lang.Object captureExitingViews(java.lang.Object,android.support.v4.app.Fragment,java.util.ArrayList,android.support.v4.util.ArrayMap,android.view.View)\r\n                                          android.support.v4.util.ArrayMap remapSharedElements(android.support.v4.app.BackStackRecord$TransitionState,android.support.v4.app.Fragment,boolean)\r\n                                          boolean configureTransitions(int,android.support.v4.app.BackStackRecord$TransitionState,boolean,android.util.SparseArray,android.util.SparseArray)\r\n                                          void prepareSharedElementTransition(android.support.v4.app.BackStackRecord$TransitionState,android.view.View,java.lang.Object,android.support.v4.app.Fragment,android.support.v4.app.Fragment,boolean,java.util.ArrayList)\r\n                                          void callSharedElementEnd(android.support.v4.app.BackStackRecord$TransitionState,android.support.v4.app.Fragment,android.support.v4.app.Fragment,boolean,android.support.v4.util.ArrayMap)\r\n                                          void setEpicenterIn(android.support.v4.util.ArrayMap,android.support.v4.app.BackStackRecord$TransitionState)\r\n                                          android.support.v4.util.ArrayMap mapSharedElementsIn(android.support.v4.app.BackStackRecord$TransitionState,boolean,android.support.v4.app.Fragment)\r\n                                          android.support.v4.util.ArrayMap remapNames(java.util.ArrayList,java.util.ArrayList,android.support.v4.util.ArrayMap)\r\n                                          void excludeHiddenFragmentsAfterEnter(android.view.View,android.support.v4.app.BackStackRecord$TransitionState,int,java.lang.Object)\r\n                                          void excludeHiddenFragments(android.support.v4.app.BackStackRecord$TransitionState,int,java.lang.Object)\r\n                                          void setNameOverride(android.support.v4.util.ArrayMap,java.lang.String,java.lang.String)\r\n                                          void setNameOverrides(android.support.v4.app.BackStackRecord$TransitionState,java.util.ArrayList,java.util.ArrayList)\r\n                                          void setBackNameOverrides(android.support.v4.app.BackStackRecord$TransitionState,android.support.v4.util.ArrayMap,boolean)\r\n                                          android.support.v4.util.ArrayMap access$000(android.support.v4.app.BackStackRecord,android.support.v4.app.BackStackRecord$TransitionState,boolean,android.support.v4.app.Fragment)\r\n                                          void access$100(android.support.v4.app.BackStackRecord,android.support.v4.util.ArrayMap,android.support.v4.app.BackStackRecord$TransitionState)\r\n                                          void access$200(android.support.v4.app.BackStackRecord,android.support.v4.app.BackStackRecord$TransitionState,android.support.v4.app.Fragment,android.support.v4.app.Fragment,boolean,android.support.v4.util.ArrayMap)\r\n                                          void access$300(android.support.v4.app.BackStackRecord,android.support.v4.app.BackStackRecord$TransitionState,int,java.lang.Object)\r\nat com.murrayc.galaxyzoo.app.ClassifyFragment.void showChildFragments(boolean)(Unknown Source)\r\nat com.murrayc.galaxyzoo.app.ClassifyFragment.void showLoadingInProgress(boolean)(Unknown Source)\r\nat com.murrayc.galaxyzoo.app.ClassifyFragment.void onAttach(android.app.Activity)(Unknown Source)\r\n                                              android.view.View onCreateView(android.view.LayoutInflater,android.view.ViewGroup,android.os.Bundle)\r\n                                              void onCreateOptionsMenu(android.view.Menu,android.view.MenuInflater)\r\n                                              android.support.v4.content.Loader onCreateLoader(int,android.os.Bundle)\r\n                                              void onLoadFinished(android.support.v4.content.Loader,android.database.Cursor)\r\n                                              void onLoaderReset(android.support.v4.content.Loader)\r\n                                              void onLoadFinished(android.support.v4.content.Loader,java.lang.Object)\r\nat android.support.v4.app.LoaderManagerImpl.android.support.v4.app.LoaderManagerImpl$LoaderInfo createLoader(int,android.os.Bundle,android.support.v4.app.LoaderManager$LoaderCallbacks)(Unknown Source)\r\n                                            void doStop()\r\nat android.support.v4.app.LoaderManagerImpl.android.support.v4.app.LoaderManagerImpl$LoaderInfo createAndInstallLoader(int,android.os.Bundle,android.support.v4.app.LoaderManager$LoaderCallbacks)(Unknown Source)\r\n                                            void doRetain()\r\nat android.support.v4.app.LoaderManagerImpl.android.support.v4.content.Loader restartLoader(int,android.os.Bundle,android.support.v4.app.LoaderManager$LoaderCallbacks)(Unknown Source)\r\n                                            void doStart()\r\nat com.murrayc.galaxyzoo.app.ClassifyFragment.void update()(Unknown Source)\r\nat com.murrayc.galaxyzoo.app.ClassifyActivity.void startNextClassification()(Unknown Source)\r\nat com.murrayc.galaxyzoo.app.ClassifyActivity.void access$500(com.murrayc.galaxyzoo.app.ClassifyActivity)(Unknown Source)\r\nat com.murrayc.galaxyzoo.app.ClassifyActivity$5.void onReceive(android.content.Context,android.content.Intent)(Unknown Source)\r\nat android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:862)\r\n... 8 more\r\n</pre>"}}