我正在使用adb / android工具等在eclipse上的模拟器上编写应用程序。 当我在下面调试我的broadcastreceiver代码时,在代码的某个部分,调试器会在我停留几秒钟时分离出来。
它没有给我足够的时间来调试和断开连接,
错误就像
- 03-01 20:42:38.293:I / CallListener(320):onReceive .. 03-01 20:42:48.319:W / ActivityManager(59):广播超时
BroadcastRecord {45098250 android.intent.action.PHONE_STATE} -
receiver=android.os.BinderProxy@450d2070 03-01 20:42:48.319:
W / ActivityManager(59):超时期间的接收器:ResolveInfo {45032058
mahmed.net.apps.CallListener p = 0 o = 0 m = 0x108000} 03-01 20:42:48.353:
I /处理(59):发送信号。 PID:320 SIG:3 03-01 20:42:48.353:
I / dalvikvm(320):threadid = 3:对信号作出反应3 03-01 20:42:48.353: I / dalvikvm(320):将堆栈跟踪写入'/data/anr/traces.txt'03-01
20:42:48.362:I /处理(59):发送信号。 PID:59 SIG:3 03-01
20:42:48.362:I / dalvikvm(59):threadid = 3:对信号3作出反应
调试器断开连接的部分是
if (newCallState.equals(TelephonyManager.EXTRA_STATE_OFFHOOK))
{
Utils.log(TAG, "off hook...");
// Do necessary work to start off a service etc ..
// If I debug here for few seconds the debugger gets detached.. without any errors
}
broadcastreceiver的完整代码是这样的:
public class CallListener extends BroadcastReceiver
{
Context m_context;
/**
* Called on application thread
*/
@Override
public void onReceive(Context context, Intent intent)
{
Utils.log(TAG, "onReceive..");
m_context = context;
String strAction = intent.getAction();
Assert.assertNotNull(strAction);
if(strAction.equals(android.telephony.TelephonyManager.ACTION_PHONE_STATE_CHANGED))
{
handleCallStateChanged(context, intent);
}
}
private void handleCallStateChanged(Context context, Intent intent)
{
Utils.log(TAG, "handling call state changed");
String newCallState = intent.getStringExtra(TelephonyManager.EXTRA_STATE);
if (newCallState.equals(TelephonyManager.EXTRA_STATE_OFFHOOK))
{
Utils.log(TAG, "off hook...");
// Do necessary work to start off a service etc ..
// If I debug here for few seconds the debugger gets detached.. without any errors
}
}
}
更多
答案 0 :(得分:2)
有一个线程有同样的问题: BroadcastReceiver onReceive timeout
复制/粘贴
为了防止您的应用在暂停时强行关闭 在调试期间的断点上,尝试安装Dev Tools 应用程序并启用调试应用程序设置:
允许您选择要调试的应用程序。您无需设置此项 附加调试器,但设置此值有两个影响:
如果你暂停一下,它会阻止Android抛出错误 在调试时很长一段时间断点。
所有细节都在这里: <击> http://developer.android.com/guide/developing/debug-tasks.html#additionaldebugging 击>
如果你在onReceive方法中做了一些复杂的事情,那么 考虑让你的BroadcastReceiver启动一个服务并传递 它从onReceive中获取的数据。然后服务可以做到 加工时间更长。
谷歌的开发者文档链接被破坏了 在这里你有: http://developer.android.com/tools/debugging/debugging-devtools.html