gpt4 book ai didi

android - C2DMBaseReceiver 类中的空指针异常报告(来自市场)

转载 作者:太空狗 更新时间:2023-10-29 15:21:32 26 4
gpt4 key购买 nike

我在我的应用程序中实现了 C2DM,我在市场上看到大量由 C2DMBaseReceiver 类中的空指针异常引起的崩溃报告。此类来自 chrometophone 项目,在 C2DM 指南 (http://code.google.com/android/c2dm/) 中有引用:

http://code.google.com/p/chrometophone/source/browse/trunk/android/c2dm/com/google/android/c2dm/C2DMBaseReceiver.java

npe发生在onHandleIntent()中,mWakeLock有时为null:

// From C2DMBaseReceiver.java:
@Override
public final void onHandleIntent(Intent intent) {
try {
Context context = getApplicationContext();
if (intent.getAction().equals(REGISTRATION_CALLBACK_INTENT)) {
handleRegistration(context, intent);
} else if (intent.getAction().equals(C2DM_INTENT)) {
onMessage(context, intent);
} else if (intent.getAction().equals(C2DM_RETRY)) {
C2DMessaging.register(context, senderId);
}
} finally {
// Release the power lock, so phone can get back to sleep.
// The lock is reference counted by default, so multiple
// messages are ok.

// If the onMessage() needs to spawn a thread or do something else,
// it should use it's own lock.
//
//
//
// NULL POINTER EXCEPTION REPORTS HERE
mWakeLock.release();
//
//
//
}
}

修复非常简单,只需在访问之前检查 mWakeLock != null 即可。但是我想知道是否有其他人看到过这个,是否应该用这个检查来更新文档?或者,如果作者希望 mWakeLock 始终被初始化,这可能是一个更大的问题?

谢谢


我在那行进行了空检查,只是稍微移动了错误:

java.lang.RuntimeException: WakeLock under-locked C2DM_LIB
at android.os.PowerManager$WakeLock.release(PowerManager.java:304)
at android.os.PowerManager$WakeLock.release(PowerManager.java:279)
at com.google.android.c2dm.C2DMBaseReceiver.onHandleIntent(C2DMBaseReceiver.java:122)
at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:59)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:123)
at android.os.HandlerThread.run(HandlerThread.java:60)

仍然不知道如何解决这个问题。

最佳答案

根据帮助开发此代码的 Mark Murphy 所说,即使您的代码完全正确,在某些情况下也会发生此错误。 See this Google Groups thread对于他的解释 - 锁不是一开始就获得的,或者是在不同的过程中获得的。

如果您持续遇到此异常,那么您可能存在缺陷。检查(使用诊断)以查看获取唤醒锁的进程是否与释放唤醒锁的进程相同。

关于android - C2DMBaseReceiver 类中的空指针异常报告(来自市场),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7348038/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com