为什么在 Android 上重复执行 OnListItemClick 时会出现 StackOverflowError?
我有一个列表视图。单击列表视图时会调用一个意图。但是当我重复执行 OnListItemClick 时,会抛出 StackOverflowError
我的代码是:
protected void onListItemClick(ListView l, View v, int position, long id) {
// TODO Auto-generated method stub
super.onListItemClick(l, v, position, id);
Cursor cursor = (Cursor) lAdapter.getItem(position);
final String lpn = cursor.getString(cursor
.getColumnIndex(SQLHelper.EMPLOYEE_LPN));
System.out.println("EMPLOYEE_LPN : " + lpn);
final Context con = this;
final ProgressDialog empDialog = ProgressDialog.show(this, "", "Loading Employee Details ....");
empDialog.setIcon(R.drawable.icon64);
empDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
empDialog.show();
Thread mBackground = new Thread() {
@Override
public void run() {
try{
// preparing a looper on current thread the current thread is being detected implicitly
Looper.prepare();
DirectoryApp appState = (DirectoryApp) getApplicationContext();
Object[][] requestArray = new Object[][] {{"lpn",lpn}};
SOAPHelper soapHelper = new SOAPHelper();
String result = soapHelper.getHttpTransportResponse(
appState.getNAMESPACE_DIRECTORY(), "",
appState.getMETHOD_NAME_GET_EMPLOYEE_DETAILS(), appState.getURL_EYDIRECTORY_SERVICE(), requestArray);
if(result.equals("")){
Toast.makeText(ListContacts.this, getString(R.string.connErr),
Toast.LENGTH_LONG).show();
}
else{
Intent intentEmp = new Intent(con,
EmployeeDetails.class);
intentEmp.putExtra("result",
result);
startActivity(intentEmp);
}
empDialog.dismiss();
handler.sendEmptyMessage(1);
}
catch (Exception e) {
empDialog.dismiss();
Bundle bundle = new Bundle();
bundle.putInt("flag", 0);
Message message = new Message();
message.setData(bundle);
handler.sendMessage(message);
}
}
};
// start the background thread
mBackground.start();
Looper.loop();
}
private Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
int flag = msg.getData().getInt("flag");
switch (flag) {
case 0:
Toast.makeText(ListContacts.this, getString(R.string.connErr),
Toast.LENGTH_LONG).show();
break;
case 1:
break;
default:
Toast.makeText(ListContacts.this, getString(R.string.connErr),
Toast.LENGTH_LONG).show();
}
}
};
例外是:
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): FATAL EXCEPTION: main
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): java.lang.StackOverflowError
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at android.view.View.draw(View.java:6739)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at android.view.ViewGroup.drawChild(ViewGroup.java:1648)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1375)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at android.view.ViewGroup.drawChild(ViewGroup.java:1646)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1375)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at android.view.ViewGroup.drawChild(ViewGroup.java:1646)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1375)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at android.view.ViewGroup.drawChild(ViewGroup.java:1646)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1375)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at android.widget.AbsListView.dispatchDraw(AbsListView.java:1365)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at android.widget.ListView.dispatchDraw(ListView.java:3046)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at android.view.View.draw(View.java:6845)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at android.widget.AbsListView.draw(AbsListView.java:2257)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at android.view.ViewGroup.drawChild(ViewGroup.java:1648)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1375)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at android.view.View.draw(View.java:6742)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at android.view.ViewGroup.drawChild(ViewGroup.java:1648)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1375)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at android.view.View.draw(View.java:6742)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at android.widget.FrameLayout.draw(FrameLayout.java:352)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at android.view.ViewGroup.drawChild(ViewGroup.java:1648)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1375)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at android.view.ViewGroup.drawChild(ViewGroup.java:1646)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1375)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at android.view.ViewGroup.drawChild(ViewGroup.java:1646)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1375)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at android.view.ViewGroup.drawChild(ViewGroup.java:1646)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1375)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at android.view.ViewGroup.drawChild(ViewGroup.java:1646)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1375)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at android.view.View.draw(View.java:6742)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at android.widget.FrameLayout.draw(FrameLayout.java:352)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at android.view.ViewGroup.drawChild(ViewGroup.java:1648)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1375)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at android.view.View.draw(View.java:6742)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at android.widget.FrameLayout.draw(FrameLayout.java:352)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:1872)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at android.view.ViewRoot.draw(ViewRoot.java:1449)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at android.view.ViewRoot.performTraversals(ViewRoot.java:1194)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at android.view.ViewRoot.handleMessage(ViewRoot.java:1771)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at android.os.Handler.dispatchMessage(Handler.java:99)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at android.os.Looper.loop(Looper.java:144)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at org.sipdroid.sipua.ui.ListContacts.onListItemClick(ListContacts.java:381)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at android.app.ListActivity$2.onItemClick(ListActivity.java:345)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at android.widget.AdapterView.performItemClick(AdapterView.java:284)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at android.widget.ListView.performItemClick(ListView.java:3382)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at android.widget.AbsListView$PerformClick.run(AbsListView.java:1696)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at android.os.Handler.handleCallback(Handler.java:587)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at android.os.Handler.dispatchMessage(Handler.java:92)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at android.os.Looper.loop(Looper.java:144)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at org.sipdroid.sipua.ui.ListContacts.onListItemClick(ListContacts.java:381)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at android.app.ListActivity$2.onItemClick(ListActivity.java:345)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at android.widget.AdapterView.performItemClick(AdapterView.java:284)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at android.widget.ListView.performItemClick(ListView.java:3382)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at android.widget.AbsListView$PerformClick.run(AbsListView.java:1696)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at android.os.Handler.handleCallback(Handler.java:587)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at android.os.Handler.dispatchMessage(Handler.java:92)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at android.os.Looper.loop(Looper.java:144)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at org.sipdroid.sipua.ui.ListContacts.onListItemClick(ListContacts.java:381)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at android.app.ListActivity$2.onItemClick(ListActivity.java:345)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at android.widget.AdapterView.performItemClick(AdapterView.java:284)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at android.widget.ListView.performItemClick(ListView.java:3382)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at android.widget.AbsListView$PerformClick.run(AbsListView.java:1696)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at android.os.Handler.handleCallback(Handler.java:587)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at android.os.Handler.dispatchMessage(Handler.java:92)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at android.os.Looper.loop(Looper.java:144)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at org.sipdroid.sipua.ui.ListContacts.onListItemClick(ListContacts.java:381)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at
I have a list view. While clicking the listview an intent is called.. But when i repeatedly perform OnListItemClick, a StackOverflowError is thrown
My code is :
protected void onListItemClick(ListView l, View v, int position, long id) {
// TODO Auto-generated method stub
super.onListItemClick(l, v, position, id);
Cursor cursor = (Cursor) lAdapter.getItem(position);
final String lpn = cursor.getString(cursor
.getColumnIndex(SQLHelper.EMPLOYEE_LPN));
System.out.println("EMPLOYEE_LPN : " + lpn);
final Context con = this;
final ProgressDialog empDialog = ProgressDialog.show(this, "", "Loading Employee Details ....");
empDialog.setIcon(R.drawable.icon64);
empDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
empDialog.show();
Thread mBackground = new Thread() {
@Override
public void run() {
try{
// preparing a looper on current thread the current thread is being detected implicitly
Looper.prepare();
DirectoryApp appState = (DirectoryApp) getApplicationContext();
Object[][] requestArray = new Object[][] {{"lpn",lpn}};
SOAPHelper soapHelper = new SOAPHelper();
String result = soapHelper.getHttpTransportResponse(
appState.getNAMESPACE_DIRECTORY(), "",
appState.getMETHOD_NAME_GET_EMPLOYEE_DETAILS(), appState.getURL_EYDIRECTORY_SERVICE(), requestArray);
if(result.equals("")){
Toast.makeText(ListContacts.this, getString(R.string.connErr),
Toast.LENGTH_LONG).show();
}
else{
Intent intentEmp = new Intent(con,
EmployeeDetails.class);
intentEmp.putExtra("result",
result);
startActivity(intentEmp);
}
empDialog.dismiss();
handler.sendEmptyMessage(1);
}
catch (Exception e) {
empDialog.dismiss();
Bundle bundle = new Bundle();
bundle.putInt("flag", 0);
Message message = new Message();
message.setData(bundle);
handler.sendMessage(message);
}
}
};
// start the background thread
mBackground.start();
Looper.loop();
}
private Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
int flag = msg.getData().getInt("flag");
switch (flag) {
case 0:
Toast.makeText(ListContacts.this, getString(R.string.connErr),
Toast.LENGTH_LONG).show();
break;
case 1:
break;
default:
Toast.makeText(ListContacts.this, getString(R.string.connErr),
Toast.LENGTH_LONG).show();
}
}
};
And the exception is :
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): FATAL EXCEPTION: main
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): java.lang.StackOverflowError
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at android.view.View.draw(View.java:6739)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at android.view.ViewGroup.drawChild(ViewGroup.java:1648)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1375)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at android.view.ViewGroup.drawChild(ViewGroup.java:1646)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1375)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at android.view.ViewGroup.drawChild(ViewGroup.java:1646)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1375)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at android.view.ViewGroup.drawChild(ViewGroup.java:1646)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1375)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at android.widget.AbsListView.dispatchDraw(AbsListView.java:1365)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at android.widget.ListView.dispatchDraw(ListView.java:3046)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at android.view.View.draw(View.java:6845)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at android.widget.AbsListView.draw(AbsListView.java:2257)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at android.view.ViewGroup.drawChild(ViewGroup.java:1648)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1375)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at android.view.View.draw(View.java:6742)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at android.view.ViewGroup.drawChild(ViewGroup.java:1648)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1375)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at android.view.View.draw(View.java:6742)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at android.widget.FrameLayout.draw(FrameLayout.java:352)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at android.view.ViewGroup.drawChild(ViewGroup.java:1648)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1375)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at android.view.ViewGroup.drawChild(ViewGroup.java:1646)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1375)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at android.view.ViewGroup.drawChild(ViewGroup.java:1646)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1375)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at android.view.ViewGroup.drawChild(ViewGroup.java:1646)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1375)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at android.view.ViewGroup.drawChild(ViewGroup.java:1646)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1375)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at android.view.View.draw(View.java:6742)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at android.widget.FrameLayout.draw(FrameLayout.java:352)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at android.view.ViewGroup.drawChild(ViewGroup.java:1648)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1375)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at android.view.View.draw(View.java:6742)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at android.widget.FrameLayout.draw(FrameLayout.java:352)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:1872)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at android.view.ViewRoot.draw(ViewRoot.java:1449)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at android.view.ViewRoot.performTraversals(ViewRoot.java:1194)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at android.view.ViewRoot.handleMessage(ViewRoot.java:1771)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at android.os.Handler.dispatchMessage(Handler.java:99)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at android.os.Looper.loop(Looper.java:144)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at org.sipdroid.sipua.ui.ListContacts.onListItemClick(ListContacts.java:381)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at android.app.ListActivity$2.onItemClick(ListActivity.java:345)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at android.widget.AdapterView.performItemClick(AdapterView.java:284)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at android.widget.ListView.performItemClick(ListView.java:3382)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at android.widget.AbsListView$PerformClick.run(AbsListView.java:1696)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at android.os.Handler.handleCallback(Handler.java:587)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at android.os.Handler.dispatchMessage(Handler.java:92)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at android.os.Looper.loop(Looper.java:144)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at org.sipdroid.sipua.ui.ListContacts.onListItemClick(ListContacts.java:381)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at android.app.ListActivity$2.onItemClick(ListActivity.java:345)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at android.widget.AdapterView.performItemClick(AdapterView.java:284)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at android.widget.ListView.performItemClick(ListView.java:3382)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at android.widget.AbsListView$PerformClick.run(AbsListView.java:1696)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at android.os.Handler.handleCallback(Handler.java:587)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at android.os.Handler.dispatchMessage(Handler.java:92)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at android.os.Looper.loop(Looper.java:144)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at org.sipdroid.sipua.ui.ListContacts.onListItemClick(ListContacts.java:381)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at android.app.ListActivity$2.onItemClick(ListActivity.java:345)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at android.widget.AdapterView.performItemClick(AdapterView.java:284)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at android.widget.ListView.performItemClick(ListView.java:3382)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at android.widget.AbsListView$PerformClick.run(AbsListView.java:1696)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at android.os.Handler.handleCallback(Handler.java:587)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at android.os.Handler.dispatchMessage(Handler.java:92)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at android.os.Looper.loop(Looper.java:144)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at org.sipdroid.sipua.ui.ListContacts.onListItemClick(ListContacts.java:381)
07-27 12:39:38.566: ERROR/AndroidRuntime(6694): at
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

发布评论
评论(2)
终难遇2024-12-03 16:11:04
我已经得到答案了:
@Override
public void run() {
try {
// preparing a looper on current thread
// the current thread is being detected implicitly
Looper.prepare();
// now, the handler will automatically bind to the
// Looper that is attached to the current thread
// You don't need to specify the Looper explicitly
handler = new Handler();
// After the following line the thread will start
// running the message loop and will not normally
// exit the loop unless a problem happens or you
// quit() the looper (see below)
Looper.loop();
} catch (Throwable t) {
Log.e(TAG, "halted due to an error", t);
}
}
~没有更多了~
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
我认为您的
Looper.loop()
调用在错误的线程中运行 - 它位于onListItemClick()
方法中,因此它在“前台”线程的上下文中运行。因此,onListItemClick()
永远不会返回,后续调用只会构建堆栈。我认为它应该位于
mBackground
线程的run()
方法中,就在catch
子句之前。另外,我不太了解如何使用
Looper
,但我不知道您应该在哪里退出Looper
。I think you have your
Looper.loop()
call running in the wrong thread - it's in theonListItemClick()
method so it's running in the context of the 'foreground' thread. ThereforeonListItemClick()
never returns and subsequent calls to it just build up the stack.I think it should be in the
run()
method of themBackground
thread, just before thecatch
clause.Also, I don't really know much about using
Looper
, but I don't see where you'd be quitting thatLooper
.