Tôi có một ứng dụng Blackberry mà khi chạy ở một số giả lập với sự hỗ trợ cảm ứng (ví dụ: 9500, 9520, 9530, 9550), chấm dứt với:BlackBerry: "Ứng dụng không phản hồi; quá trình chấm dứt" vì UiApplication.getUiApplication(). PopScreen()?
"Ứng dụng không được đáp ứng; quá trình XPTO chấm dứt"
Sử dụng các bản ghi, tôi phát hiện ra rằng nó có vẻ như ứng dụng được dừng lại trong một lớp học mà tôi không đồng bộ làm cho các yêu cầu HTTP: một cái gì đó như:
public class LoadingFullScreen extends FullScreen implements Runnable {
private Thread actionThread = null;
protected void onDisplay() {
actionThread = new Thread(this);
actionThread.start();
}
protected void onUndisplay() {
if(actionThread != null && actionThread.isAlive()) {
actionThread.interrupt();
}
}
public void run() {
//make http requests - this is done successfully
synchronized(Application.getEventLock()) {
Screen active = UiApplication.getUiApplication().getActiveScreen();
if (active instanceof LoadingFullScreen) {
Logger.debug("LoadingFullScreen popping screen"); //this appears in logs
UiApplication.getUiApplication().popScreen(active);
Logger.debug("LoadingFullScreen screen popped"); //this never appears in logs
}
}
}
}
tôi khởi động màn hình này với UiApplication.getUiApplication().pushModalScreen(new LoadingFullScreen())
Trong các bản ghi tôi có thể thấy:
[0.0] Wed Jul 27 17:53:06 GMT 2011 - DEBUG: LoadingFullScreen popping screen
[0.0] JVM: bklt[1] @163148: JBSC on=0
[0.0] JVM: bklt[1] @163148: SC 0
[0.0] JVM: bklt[1]: setTimeout 30
[0.0] Application XPTO(212) is not responding; process terminated
Nó có vẻ như UiApplication.getUiApplication().popScreen()
đang chặn ứng dụng, và do đó các hệ điều hành tiêu diệt ứng dụng, nhưng tại sao?
EDIT:
Tôi cũng đã cố gắng sử dụng
UiApplication.getUiApplication().invokeLater(new Runnable() {...} };
thay vì synchronized(Application.getEventLock()) {...}
nhưng tôi có kết quả chính xác cùng
EDIT 2:
Tôi cũng đã cố gắng active.close()
thay vì UiApplication.getUiApplication().popScreen(active);
nhưng tôi có kết quả chính xác tương tự
EDIT 3: Sử dụng javaloader
tôi đã loại stacktrace từ giả lập:
guid:0x9C3CD62E3320B498 time: Thu Jul 28 15:02:50 2011 severity:0 type:3 app:Java Exception data:
ForcedStackTraceException
net_rim_services_impl(4) 27 2 0x1030B000
net_rim_os-3(4BEF0320)
HttpConnectionManager$CleanupThread
run
0x3B09
guid:0x9C3CD62E3320B498 time: Thu Jul 28 15:02:50 2011 severity:0 type:3 app:Java Exception data:
ForcedStackTraceException
XPTO(247) 60 4 0x124A0400
net_rim_cldc-16(4BEEF8A5)
TextField
getFocusRect
0x2A61
net_rim_cldc-12(4BEEF8A5)
Manager
getFocusRect
0x717
net_rim_cldc-12(4BEEF8A5)
Manager
getFocusRect
0x717
net_rim_cldc-12(4BEEF8A5)
Screen
getFocusRect
0x9AF2
net_rim_cldc-12(4BEEF8A5)
Screen
callOnExposed
0x9D16
net_rim_cldc-13(4BEEF8A5)
UiEngineImpl
<private>
0x9007
net_rim_cldc-13(4BEEF8A5)
UiEngineImpl
removeScreen
0x7D08
net_rim_cldc-12(4BEEF8A5)
Screen
close
0x6B66
XPTO-8(4E316B06)
LoadingFullScreen$1
run
0x34D5
net_rim_cldc-8(4BEEF8A5)
Application
dispatchInvokeLater
0x1A87
net_rim_cldc-8(4BEEF8A5)
Application
<private>
0x2809
net_rim_cldc-8(4BEEF8A5)
Application
processNextMessage
0x1AEF
net_rim_cldc-9(4BEEF8A5)
ModalEventThread
run
0xBE4F
guid:0x9C3CD62E3320B498 time: Thu Jul 28 15:02:50 2011 severity:0 type:3 app:Java Exception data:
ForcedStackTraceException
XPTO(247) 30 2 0x139DA800
net_rim_cldc(4BEEF8A5)
Object
wait
0x9922
net_rim_cldc-8(4BEEF8A5)
Application
startModalEventThread
0x1EB8
net_rim_cldc-13(4BEEF8A5)
UiEngineImpl
addScreenModal
0x83F4
net_rim_cldc-13(4BEEF8A5)
UiEngineImpl
pushModalScreen
0x674E
net_rim_cldc-13(4BEEF8A5)
UiApplication
pushModalScreen
0x62B0
XPTO-8(4E316B06)
MyBaseScreen
<private>
0x3AA6
XPTO-8(4E316B06)
MyBaseScreen
openTheModalScreenFunction
0x382C
XPTO-8(4E316B06)
MyBaseScreen$4
fieldChanged
0x4271
net_rim_cldc-11(4BEEF8A5)
Field
fieldChangeNotify
0x160B
net_rim_cldc-16(4BEEF8A5)
TextField
replace
0x7A5
net_rim_cldc-16(4BEEF8A5)
TextField
inputMethodTextChanged
0x24E1
net_rim_cldc-15(4BEEF8A5)
PasswordEditField
inputMethodTextChanged
0x4F26
net_rim_cldc-27(4BEEF8A5)
IMContext
dispatchInputMethodEvent
0x1E00
net_rim_tid-4(4BEEF8E1)
SLInputMethod
sendComposedText
0x5CA1
net_rim_tid-4(4BEEF8E1)
SLInputMethod
sendComposedText
0x5BD1
net_rim_tid_fastEuropean(4BEF034C)
FastEuropeanInputMethod
sendComposedText
0x48E1
net_rim_tid_fastEuropean(4BEF034C)
FastEuropeanInputMethod
dispatchConversionEvent
0x43E3
net_rim_tid-4(4BEEF8E1)
SLInputMethod
dispatchKeyEvent
0x5309
net_rim_tid-4(4BEEF8E1)
SLInputMethod
dispatchEvent
0x63CA
net_rim_tid_fastEuropean(4BEF034C)
FastEuropeanInputMethod
dispatchEvent
0x426E
net_rim_cldc-27(4BEEF8A5)
InputContext
dispatchEvent
0x3E15
net_rim_cldc-27(4BEEF8A5)
IMContext
dispatchEvent
0x21DE
net_rim_cldc-11(4BEEF8A5)
Field
dispatchEvent
0x3739
net_rim_cldc-16(4BEEF8A5)
TextField
dispatchEvent
0x30F6
net_rim_cldc-27(4BEEF8A5)
EventHandler
<private>
0x1460
net_rim_cldc-27(4BEEF8A5)
EventHandler
processKeyEvent
0x1A79
net_rim_cldc-16(4BEEF8A5)
TextField
processKeyEvent
0x37F6
net_r
EDIT 4: Tôi đã cố gắng để di chuyển các phương pháp run()
trong LoadingFullScreen
đến một lớp học mới Runnable
, như Tôi được thông báo rằng có LoadingFullScreen implement Runnable
có thể gây ra sự cố khi lớp đó được hiển thị dưới dạng màn hình phương thức.
Tuy nhiên, tôi không có may mắn và tôi vẫn gặp vấn đề tương tự.
Bất kỳ ý tưởng nào?
EDIT 5: Giải Quyết ở đây: BlackBerry: "Application is not responding; process terminated" because of UiApplication.getUiApplication().popScreen()?
Bạn có sử dụng bất kỳ phần ghi đè nào trên "hoạt động" hay không. onClose()? –
Hi Ray. Tôi đang ghi đè lênHiển thị và onUndisplay. Tôi đang chỉnh sửa bài đăng, thêm các phương thức đó – pandre
Tôi khởi chạy màn hình này bằng UiApplication.getUiApplication(). PushModalScreen (new LoadingFullScreen()), nó có ảnh hưởng gì không? – pandre