10-07-2008 03:48 PM
We have an application that displays a global-modal PopupScreen in resposne to certain events. We have an ongoing issue where this dialog is not repainted if it is in the global queue behind a system "Missed Call" dialog.
The scenario looks like this:
1. Call is missed, system displays "missed call" dialog.
2. Our dialog is pushed with a lower priority, so it remains in the global queue behind the missed-call dialog.
3. Missed-call dialog is dismissed
4. Missed call dialog remains painted on the display, despite having been dismissed. It is no longer processing UI events.
5. Our dialog is (apparently?) is now at the top of the stack
6. Our dialog never paints. Neither the onExposed() nor the onFocusNotify() methods are hit.
7. Despite that, our dialog appears to have the focus.
8. Although it is invisible, it will respond to a button hotkey if one is typed. It is NOT receiving navigation events.
This scenario only appears on 4.3.0.x. On 4.2, 4.5, and 4.6, the dialog gets an onFocusNotify() event and is correctly painted after the Missed-call dialog is dismissed. Furthermore, I cannot duplicate the issue on the 4.3.0 simulators.
Has anyone seen this issue? Is there a suggested work-around?
10-08-2008 10:01 AM
10-08-2008 10:10 AM
The application is normally in background when this is invoked, but in 4.3 we have also tried requestForeground() prior to pushing the global, and this doesn't seem to help the situation.
10-08-2008 02:11 PM
Are you able to reproduce this in the BlackBerry Simulator? I tried to trigger this by using the notificationsdemo included with the BlackBerry JDE and was unable to reproduce it.
I modified the sample to user a Timer and TimerTask to delay the firing of the notification from the MenuItem to allow time to simulate and end an incoming call.
10-09-2008 10:15 AM
10-09-2008 10:54 AM
According to our call center, this problem has been reported in the field from every version of 4.3. The most common version I see the report on are 22.214.171.124 and 126.96.36.199.
My test units are:
188.8.131.52 on an 8330 Curve
184.108.40.206 on an 8100 Pearl
I can duplicate the issue on both units.
I cannot duplicate on:
Curve running 220.127.116.11
Curve running 18.104.22.168
Bold running 22.214.171.124
10-09-2008 11:00 AM
Before you burn any cycles on this, can you send me your test case that you referenced earlier? Let me see if I can/cannot duplicate using your code first. This might make give me a better clue, either way..
10-09-2008 02:07 PM
My test was based on the notificationsdemo included with the BlackBerry JDE. I just modified the _notifyItem MenuItem to execute its code within a TimerTask that fires 10 seconds in the future. I then clicked on the MenuItem of the demo, called the BlackBerry and then hung up (before the 10 seconds expired). The dialog then popped up under the missed call dialog.
So far I have only tested this in the BlackBerry Simulator.
10-09-2008 02:36 PM
In the off chance that the issue was due to a highly customized subclass of PopupScreen (with many methods overridden, a custom layout manager, and much custom painting), I tried duplicating the issue with a generic PopupScreen and a stock VerticleFieldManager with one labelfield and one button. .
Unfortunately, the stock PopupScreen acts the exactly same as the custom dialog.