hawkular / hawkular-android-client

Apache License 2.0
10 stars 26 forks source link

Force close occurring when quickly switching from favourites to Alerts(Navigation Drawer). #130

Closed shubhamvashisht closed 7 years ago

shubhamvashisht commented 7 years ago

g_20170309_1912573

03-09 19:21:12.040 6656-6666/org.hawkular.client.android E/StrictMode: A resource was acquired at attached stack trace but never released. See java.io.Closeable for information on avoiding resource leaks. java.lang.Throwable: Explicit termination method 'close' not called at dalvik.system.CloseGuard.open(CloseGuard.java:180) at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:190) at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:177) at android.database.sqlite.SQLiteDatabase.openInner(SQLiteDatabase.java:808) at android.database.sqlite.SQLiteDatabase.open(SQLiteDatabase.java:793) at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:696) at android.app.ContextImpl.openOrCreateDatabase(ContextImpl.java:680) at android.content.ContextWrapper.openOrCreateDatabase(ContextWrapper.java:289) at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:223) at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:163) at org.jboss.aerogear.android.store.sql.SQLStore.openSync(SQLStore.java:373) at org.hawkular.client.android.fragment.FavTriggersFragment.setUpTriggers(FavTriggersFragment.java:92) at org.hawkular.client.android.fragment.FavTriggersFragment.onActivityCreated(FavTriggersFragment.java:85) at android.support.v4.app.Fragment.performActivityCreated(Fragment.java:2198) at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1326) at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1528) at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1595) at android.support.v4.app.BackStackRecord.executeOps(BackStackRecord.java:757) at android.support.v4.app.FragmentManagerImpl.executeOps(FragmentManager.java:2355) at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2146) at android.support.v4.app.FragmentManagerImpl.optimizeAndExecuteOps(FragmentManager.java:2098) at android.support.v4.app.FragmentManagerImpl.execSingleAction(FragmentManager.java:1979) at android.support.v4.app.BackStackRecord.commitNowAllowingStateLoss(BackStackRecord.java:626) at android.support.v4.app.FragmentStatePagerAdapter.finishUpdate(FragmentStatePagerAdapter.java:166) at android.support.v4.view.ViewPager.populate(ViewPager.java:1268) at android.support.v4.view.ViewPager.setCurrentItemInternal(ViewPager.java:668) at android.support.v4.view.ViewPager.setCurrentItemInternal(ViewPager.java:630) at android.support.v4.view.ViewPager.dataSetChanged(ViewPager.java:1110) at android.support.v4.view.ViewPager$PagerObserver.onChanged(ViewPager.java:3113) at android.support.v4.view.PagerAdapter.notifyDataSetChanged(PagerAdapter.java:284) at org.hawkular.client.android.activity.DrawerActivity.showFavourites(DrawerActivity.java:222) at org.hawkular.client.android.activity.DrawerActivity.onNavigationItemSelected(DrawerActivity.java:343) at android.support.design.widget.NavigationView$1.onMenuItemSelected(NavigationView.java:156) at android.support.v7.view.menu.MenuBuilder.dispatchMenuItemSelected(MenuBuilder.java:822) at android.support.v7.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:156) at android.support.v7.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:969) at android.support.design.internal.NavigationMenuPresenter$1.onClick(NavigationMenuPresenter.java:342) at android.view.View.performClick(View.java:5612) at android.view.View$PerformClick.run(View.java:22285) at android.os.Handler.handleCallback(Handler.java:751) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java:6123) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:757)

sauravvishal8797 commented 7 years ago

@shubhamvashisht It seems to be working fine. The app isn't force closing on switching from favourites to alerts.

shubhamvashisht commented 7 years ago

@sauravvishal8797 It is crashing. here you go again

g_20170311_1457343

m-murad commented 7 years ago

@sauravvishal8797 What device are you using? Its working fine on my device (Moto G4 Plus, Android 7.0)

shubhamvashisht commented 7 years ago

@free4murad i am also using Moto G4 Plus, Android 7.0 . crashing on my device.

sauravvishal8797 commented 7 years ago

I am using Moto G2 2nd gen, Android 6.0, not crashing on my phone. videotogif_2017 03 11_16 37 51

danielpassos commented 7 years ago

I also don't get this problem, but if it exists and we can fix, let's do it!

shubhamvashisht commented 7 years ago

@danielpassos @sauravvishal8797 its crashing on my device very frequently, let me see the logcat again..i will update here.

m-murad commented 7 years ago

@shubhamvashisht I think you are not running the latest code. Because the title of toolbar is not being displayed in the latest code and the gif you have shared is showing the title. I suggest that you fetch the latest code and run the app.

shubhamvashisht commented 7 years ago

@free4murad might be, let me test.

shubhamvashisht commented 7 years ago

fetched latest code, still same result. am on it. g_20170311_2033423

KeenWarrior commented 7 years ago

@shubhamvashisht Can you please add complete logcat

janakamarasena commented 7 years ago

Hi I was able to recreate the issue (easier to recreate if you are running the app on a slower internet connection).

It happens only if you switch between the tabs before the content is loaded. I found there are two issues that will cause two separate null pointer exceptions.

When I kept recreating the issue once I got this

E/AndroidRuntime: FATAL EXCEPTION: main Process: org.hawkular.client.android, PID: 25808 java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.View android.view.View.findViewById(int)' on a null object reference at org.hawkular.client.android.util.ViewDirector.show(ViewDirector.java:63) at org.hawkular.client.android.fragment.AlertsFragment.showMessage(AlertsFragment.java:378) at org.hawkular.client.android.fragment.AlertsFragment.access$800(AlertsFragment.java:65) at org.hawkular.client.android.fragment.AlertsFragment$AlertsCallback.onSuccess(AlertsFragment.java:439) at org.hawkular.client.android.fragment.AlertsFragment$AlertsCallback.onSuccess(AlertsFragment.java:433) at org.jboss.aerogear.android.pipe.loader.LoaderAdapter.supportFragmentSuccess(LoaderAdapter.java:315) at org.jboss.aerogear.android.pipe.loader.LoaderAdapter.access$500(LoaderAdapter.java:59) at org.jboss.aerogear.android.pipe.loader.LoaderAdapter$CallbackHandler.run(LoaderAdapter.java:374) at android.os.Handler.handleCallback(Handler.java:751) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java:6688) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1468) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1358)

Then another time I got this

E/AndroidRuntime: FATAL EXCEPTION: main Process: org.hawkular.client.android, PID: 30779 java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Object android.content.Context.getSystemService(java.lang.String)' on a null object reference at android.view.LayoutInflater.from(LayoutInflater.java:233) at org.hawkular.client.android.adapter.BindableAdapter.(BindableAdapter.java:36) at org.hawkular.client.android.adapter.TriggersAdapter.(TriggersAdapter.java:54) at org.hawkular.client.android.fragment.TriggersFragment.setUpTriggers(TriggersFragment.java:148) at org.hawkular.client.android.fragment.TriggersFragment.access$200(TriggersFragment.java:67) at org.hawkular.client.android.fragment.TriggersFragment$TriggersCallback.onSuccess(TriggersFragment.java:256) at org.hawkular.client.android.fragment.TriggersFragment$TriggersCallback.onSuccess(TriggersFragment.java:252) at org.jboss.aerogear.android.pipe.loader.LoaderAdapter.supportFragmentSuccess(LoaderAdapter.java:315) at org.jboss.aerogear.android.pipe.loader.LoaderAdapter.access$500(LoaderAdapter.java:59) at org.jboss.aerogear.android.pipe.loader.LoaderAdapter$CallbackHandler.run(LoaderAdapter.java:374) at android.os.Handler.handleCallback(Handler.java:751) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java:6688) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1468) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1358)

Device: Galaxy S7 - Android 7.0

I didn't have much time to look into this but I'd like to see if can put a fix for this

KeenWarrior commented 7 years ago

@janakamarasena Go for it

KeenWarrior commented 7 years ago

@janakamarasena Reason for this issue is callback of success/fail may come from server when user is out of screen already. You have to do is set it to perform UI actions only when fragment is displayable

janakamarasena commented 7 years ago

@garg-anuj will start working on it :)