Then why is the order different when you run DroidGap and Standalone as an activity?
On Thu, Apr 19, 2012 at 12:47 PM, Simon MacDonald <[email protected] > wrote: > Okay, that's cool. We now know it isn't a manufacturer quirk it is an > environment quirk. > > It's not actually an inheritance problem. The order of methods being called > ends up being: > > onKeyDown > onKeyUp > onBackPressed > > However, if your Activity overrides onKeyUp and it does not caller > super.onKeyUp() when it is handling the back key the method onBackPressed() > will never be called. It is the super.onKeyUp() that calls onBackPressed(). > That was what was going on when I was using your back key changes. > > Simon Mac Donald > http://hi.im/simonmacdonald > > > On Thu, Apr 19, 2012 at 3:32 PM, Joe Bowser <[email protected]> wrote: > > > OK, here's what happened. > > > > When I currently work on Cordova, I run the project as an activity, and > not > > as a jar. This is done for convenience because I've had jars lose sync > > with the code that I'm debugging in Eclipse in the past. However, what > > this means is that I don't have a working back button. > > > > Activity has a default behaviour for the back button. This default > > behaviour is defined by onBackPressed and onKeyDown when you extend an > > activity, which is of course that the application would exit. Therefore, > > one would assume that since any class that uses the jar extends DroidGap > > and that since DroidGap is extending Activity that the class would extend > > Activity by virtue of it being a DroidGap class. > > > > In reality this is wrong, and somehow through some voodoo the onKeyUp > event > > work even though it shouldn't because the App should have ran the > > Activity's onKeyDown and onBackPressed. > > > > In short, I have to use the bin/create scripts because Java inheritance > > doesn't seem to work the way I thought it should. > > > > Joe > > > > On Thu, Apr 19, 2012 at 12:22 PM, Simon MacDonald < > > [email protected] > > > wrote: > > > > > That's ominous. > > > > > > Simon Mac Donald > > > http://hi.im/simonmacdonald > > > > > > > > > On Thu, Apr 19, 2012 at 3:20 PM, Joe Bowser <[email protected]> wrote: > > > > > > > OK, let's revert the changes. It looks like I'm going to have to > > change > > > > how I work on this project. > > > > > > > > On Thu, Apr 19, 2012 at 12:15 PM, Filip Maj <[email protected]> wrote: > > > > > > > > > Actually the latest master breaks back button on my galaxy nexus > too. > > > > > > > > > > I'll run through the tests and help out with this. > > > > > > > > > > On 4/19/12 12:07 PM, "Joe Bowser" <[email protected]> wrote: > > > > > > > > > > >There's a problem with the log statement that you provided, namely > > the > > > > > >fact > > > > > >that this.backHistory() actually goes back in the history before > it > > > > > >returns > > > > > >true or false. This was causing the app to constantly exit when we > > > were > > > > > >running mobile-spec, which was similar to the original bug. I > > > removed > > > > it > > > > > >because I wanted the log statements to just log, and here's what I > > got > > > > > >from > > > > > >the Motorola Device: > > > > > > > > > > > >04-20 02:56:14.187 19771 19771 D BackPressed: in onBackPressed > > > > > >04-20 02:56:14.187 19771 19771 D BackPressed: bound = false > > > > > >04-20 02:56:14.187 19771 19771 D BackPressed: exiting > > > > > >04-20 02:56:14.234 1032 1032 D ActivitityRenderTarget: onResume > > > > > >04-20 02:56:14.257 19771 19771 D BackButton: I got an up from > > > > KEYCODE_BACK > > > > > >04-20 02:56:14.265 19771 19771 D BackButton: I'm doing nothing > > > > > >04-20 02:56:14.265 19771 19771 D BackPressed: returning false > > > > > > > > > > > >So, here we're exiting the app on the keyDown, and the keyUp is > also > > > > > >happening which is exactly what I would expect since you have to > do > > a > > > > > >onKeyDown before an onKeyUp. Here's the same thing on the Samsung > > > > Galaxy > > > > > >S2: > > > > > > > > > > > >D/BackPressed(17630): in onBackPressed > > > > > >D/BackPressed(17630): bound = false > > > > > >D/BackPressed(17630): exiting > > > > > >I/InputDispatcher( 2704): Delivering key to current input target: > > > > action: > > > > > >1, channel '409de9f8 > > org.apache.cordova/org.apache.cordova.StandAlone > > > > > >(server)' > > > > > > > > > > > >...A bunch of crap about widgets not being drawn right on the home > > > > screen > > > > > >which is resuming... > > > > > > > > > > > >D/BackButton(17630): I got an up from KEYCODE_BACK > > > > > >D/BackButton(17630): I'm doing nothing > > > > > >D/BackPressed(17630): returning false > > > > > > > > > > > >I should remove the crap Samsung puts on their default build, but > > this > > > > > >does > > > > > >illustrate my point more clearly. Once we remove the extra > > > backHistory > > > > > >call, things seem to work properly on this end and the app does > > exit. > > > > It > > > > > >seems incredibly strange that the Note would fail. > > > > > > > > > > > >On Thu, Apr 19, 2012 at 11:48 AM, Simon MacDonald > > > > > ><[email protected] > > > > > >> wrote: > > > > > > > > > > > >> Oh, and here is the dirt simple .html I was using. I was > checking > > a > > > > > >> possible camera bug and found I couldn't exit the app. > > > > > >> > > > > > >> http://dl.dropbox.com/u/887989/camera.html > > > > > >> > > > > > >> Simon Mac Donald > > > > > >> http://hi.im/simonmacdonald > > > > > >> > > > > > >> > > > > > >> On Thu, Apr 19, 2012 at 2:44 PM, Simon MacDonald > > > > > >> <[email protected]>wrote: > > > > > >> > > > > > >> > You can get my version of DroidGap with the extra logs from: > > > > > >> > > > > > > >> > http://dl.dropbox.com/u/887989/DroidGap.java > > > > > >> > > > > > > >> > Did you clone the 1.6.1 tag or the bleeding edge? > > > > > >> > > > > > > >> > Simon Mac Donald > > > > > >> > http://hi.im/simonmacdonald > > > > > >> > > > > > > >> > > > > > > >> > On Thu, Apr 19, 2012 at 2:38 PM, Joe Bowser < > [email protected]> > > > > > wrote: > > > > > >> > > > > > > >> >> I cloned a fresh repo, and what's in DroidGap.java works on > > this > > > > end, > > > > > >> and > > > > > >> >> matches what I have in my working tree. We don't have your > > > > attached > > > > > >> >> DroidGap.java, can you send it again? > > > > > >> >> > > > > > >> >> On Thu, Apr 19, 2012 at 11:28 AM, Simon MacDonald < > > > > > >> >> [email protected] > > > > > >> >> > wrote: > > > > > >> >> > > > > > >> >> > When I pull the latest from incubator-cordova-android and > > build > > > > it > > > > > >> into > > > > > >> >> my > > > > > >> >> > app the back key does not work. I've verified this on my > > > samsung > > > > > >>note > > > > > >> >> and > > > > > >> >> > on the emulator. > > > > > >> >> > > > > > > >> >> > Please take a look at the attached DroidGap.java file which > > > I've > > > > > >> added a > > > > > >> >> > few logs. When I click on the back button on the note or on > > the > > > > > >> >> emulator I > > > > > >> >> > see these logs: > > > > > >> >> > > > > > > >> >> > 04-19 14:16:49.373: D/BackButton(390): I got an up from > > > > > >>KEYCODE_BACK > > > > > >> >> > 04-19 14:16:49.373: D/BackButton(390): I'm doing nothing > > > > > >> >> > 04-19 14:16:49.373: D/BackPressed(390): returning false > > > > > >> >> > > > > > > >> >> > I'm not seeing the onBackPressed method being called at > all. > > > Can > > > > > >> Joe/Fil > > > > > >> >> > try my DroidGap.java to see if they get a different set of > > > logs? > > > > > >> >> > > > > > > >> >> > Note that the .html I'm loading has one and only one file > and > > > > does > > > > > >>not > > > > > >> >> > call 'document.addEventListener("backbutton", onBackKey, > > > true)". > > > > > >>It is > > > > > >> >> just > > > > > >> >> > a plain vanilla .html file. > > > > > >> >> > > > > > > >> >> > Simon Mac Donald > > > > > >> >> > http://hi.im/simonmacdonald > > > > > >> >> > > > > > > >> >> > > > > > > >> >> > On Thu, Apr 19, 2012 at 2:17 PM, Filip Maj <[email protected]> > > > > wrote: > > > > > >> >> > > > > > > >> >> >> We definitely cannot revert that commit Joe put in. Back > > > button > > > > > >> didn't > > > > > >> >> >> work at all (just exited) before that commit. > > > > > >> >> >> > > > > > >> >> >> Sucks that the note is broken but it works as expected on > > > other > > > > > >> devices > > > > > >> >> >> (as Joe points out). > > > > > >> >> >> > > > > > >> >> >> Simon can you try to debug the issue on the Note and see > how > > > the > > > > > >> >> execution > > > > > >> >> >> flow differs from the other Android devices? > > > > > >> >> >> > > > > > >> >> >> On 4/19/12 10:58 AM, "Joe Bowser" <[email protected]> > > wrote: > > > > > >> >> >> > > > > > >> >> >> >OK, I just went through Mobile Spec's manual tests on the > > > > > >>following > > > > > >> >> >> >devices: > > > > > >> >> >> > > > > > > >> >> >> >Galaxy Nexus > > > > > >> >> >> >Nexus S > > > > > >> >> >> >Motorola RAZR > > > > > >> >> >> >Samsung Galaxy S2 > > > > > >> >> >> >LG Optimus One > > > > > >> >> >> > > > > > > >> >> >> >Currently, if you don't override the back button, the > > > > backPressed > > > > > >> >> event > > > > > >> >> >> >fires on the keyDown. If we override the event, the > > > backbutton > > > > > >> >> doesn't > > > > > >> >> >> >work on the keydown, but the event fires on the keyup > > > instead. > > > > > >> This I > > > > > >> >> >> >think is the proper behaviour since we're intercepting > the > > > back > > > > > >> button > > > > > >> >> >> and > > > > > >> >> >> >making it the users' responsibility to handle this event. > > > > > >> >> >> > > > > > > >> >> >> >The old method had the default behaviour for the back > > button > > > > > >>(where > > > > > >> it > > > > > >> >> >> >quits on keydown) occur, as well as the keyUp behaviour > > > happen. > > > > > >>Of > > > > > >> >> >> >course, > > > > > >> >> >> >since the app is exited and is in the background whatever > > > > happens > > > > > >> with > > > > > >> >> >> the > > > > > >> >> >> >back button at that point is moot. The fact is that I > > expect > > > > the > > > > > >> back > > > > > >> >> >> >button to work when I press it, and I don't consciously > > think > > > > > >>about > > > > > >> >> key > > > > > >> >> >> up > > > > > >> >> >> >or key down when I do so. I also think that Google put > it > > on > > > > > >> keydown > > > > > >> >> for > > > > > >> >> >> >a > > > > > >> >> >> >reason, especially since it's not really a key anymore. > > > > > >> >> >> > > > > > > >> >> >> >On Thu, Apr 19, 2012 at 10:48 AM, Joe Bowser < > > > > [email protected]> > > > > > >> >> wrote: > > > > > >> >> >> > > > > > > >> >> >> >> You're saying that the behaviour is different on the > > Note? > > > > I'll > > > > > >> run > > > > > >> >> >> >> through our device bank here, but the fact is that the > > Back > > > > > >>Button > > > > > >> >> >> would > > > > > >> >> >> >> ALWAYS exit, not progress through the history but just > > > > > >>straight up > > > > > >> >> exit > > > > > >> >> >> >> regardless of where in the app you were. What I added > > was > > > > > >> >> backPressed > > > > > >> >> >> >> which would only exit if you were at the top of the > > > history. > > > > > >> Also, > > > > > >> >> >> >> backPressed should be supported for Android versions > > higher > > > > > >>than > > > > > >> >> >> Android > > > > > >> >> >> >> 2.0, and since we're only supporting 2.1+, we should > have > > > > been > > > > > >> fine. > > > > > >> >> >> >> > > > > > >> >> >> >> I'll investigate this, but honestly if it's not > > consistent > > > > > >>across > > > > > >> >> >> >>devices, > > > > > >> >> >> >> what do we do then? > > > > > >> >> >> >> > > > > > >> >> >> >> On Thu, Apr 19, 2012 at 10:26 AM, Simon MacDonald < > > > > > >> >> >> >> [email protected]> wrote: > > > > > >> >> >> >> > > > > > >> >> >> >>> The reason we switched to keyUp is so you could slide > > your > > > > > >>finger > > > > > >> >> off > > > > > >> >> >> >>>the > > > > > >> >> >> >>> up button in case you changed your mind about clicking > > on > > > > the > > > > > >> back > > > > > >> >> >> >>>button. > > > > > >> >> >> >>> > > > > > >> >> >> >>> I noticed that you checked in: > > > > > >> >> >> >>> > > > > > >> >> >> >>> > > > > > >> >> >> >>> > > > > > >> >> >> >>> > > > > > >> >> >> > > > > > >> >> > > > > > >> > > > > > > https://git-wip-us.apache.org/repos/asf?p=incubator-cordova-android.git > > > > > >> ; > > > > > >> >> >> >>>a=commit;h=180696baec28d6e6b67e8bb23a5302f21bce6b79 > > > > > >> >> >> >>> > > > > > >> >> >> >>> On my Samsung Galaxy Note running Android 2.3.6 the > back > > > > > >>button > > > > > >> >> does > > > > > >> >> >> >>>not > > > > > >> >> >> >>> work. That is when I do not regisiter for a > "backbutton" > > > > > >>listener > > > > > >> >> and > > > > > >> >> >> I > > > > > >> >> >> >>> expect that when I click the back key that my app > would > > > > exit. > > > > > >> With > > > > > >> >> our > > > > > >> >> >> >>>fix > > > > > >> >> >> >>> the back button doesn't exit the app. I have to click > > the > > > > home > > > > > >> >> button > > > > > >> >> >> >>>to > > > > > >> >> >> >>> exit. > > > > > >> >> >> >>> > > > > > >> >> >> >>> Reverting your change returns the back button > behaviour > > to > > > > > >> normal. > > > > > >> >> So > > > > > >> >> >> >>> something is still janky. I haven't been able to test > it > > > on > > > > my > > > > > >> >> phone > > > > > >> >> >> >>>as I > > > > > >> >> >> >>> can't convince it to be recognized on my laptop. > > > > > >> >> >> >>> > > > > > >> >> >> >>> Simon Mac Donald > > > > > >> >> >> >>> http://hi.im/simonmacdonald > > > > > >> >> >> >>> > > > > > >> >> >> >>> > > > > > >> >> >> >>> On Tue, Apr 17, 2012 at 8:46 PM, Joe Bowser > > > > > >><[email protected]> > > > > > >> >> >> wrote: > > > > > >> >> >> >>> > > > > > >> >> >> >>> > Hey > > > > > >> >> >> >>> > > > > > > >> >> >> >>> > Remember this issue: > > > > > >> >> >> >>> > https://issues.apache.org/jira/browse/CB-367 > > > > > >> >> >> >>> > > > > > > >> >> >> >>> > I'm surprised that I'm catching it now, but the Back > > > > Button > > > > > >>is > > > > > >> >> >> really > > > > > >> >> >> >>> janky > > > > > >> >> >> >>> > on my Nexus S running 2.3.6, and I'm working on a > fix > > > now. > > > > > >> What > > > > > >> >> was > > > > > >> >> >> >>>the > > > > > >> >> >> >>> > reasoning behind the Back Button being on the keyUp > > > > instead > > > > > >>of > > > > > >> >> the > > > > > >> >> >> >>> keyDown? > > > > > >> >> >> >>> > I don't remember. > > > > > >> >> >> >>> > > > > > > >> >> >> >>> > Joe > > > > > >> >> >> >>> > > > > > > >> >> >> >>> > > > > > >> >> >> >> > > > > > >> >> >> >> > > > > > >> >> >> > > > > > >> >> >> > > > > > >> >> > > > > > > >> >> > > > > > >> > > > > > > >> > > > > > > >> > > > > > > > > > > > > > > > > > > > >
