Android - 推送器 - eventQueue 错误
Android - Pusher - eventQueue Error
为什么会出现该错误?如何将此 method/class 中的信息传递给我的另一个 class?推送器 class/code 正确获取数据并正确显示,但是当我尝试从另一个 class 访问其他方法时,它给我以下错误。有任何想法吗?
这是我的推送代码 class Handler_Pusher:
privatechannel.bind("event", new PrivateChannelEventListener() {
@Override
public void onEvent(final String channelName, final String eventName, final String data) {
Log.v(TAG, "Private Test onEvent: " + channelName + " " + eventName + " " + data);
docSyncData = getDocumentUrlExtension(data);
final String URL = DOCUMENT_URL_PREFIX + docSyncData + ".pdf";
Log.v(TAG, "URL:::" + URL);
Activity_InCall.dialogLaunch(URL);
}
@Override
public void onSubscriptionSucceeded(String channelName) {
Log.v(TAG, "Private Channel onSubscriptionSucceeded: " + channelName);
}
@Override
public void onAuthenticationFailure(String message, Exception e) {
Log.v(TAG, "Private Channel onAuthenticationFailure: " + message + ":::" + e);
}
});
这是我试图在 class Activity_InCall:
中调用的方法
public static void dialogLaunch(String data){
Log.v(TAG, "Pusher:::" + data);
Intent activityDocSync = new Intent(context, Activity_DocSync.class);
context.startActivity(activityDocSync);
}
这是我看到的 logcat 错误,URL 正常,但随后给了我 "eventQueue" 错误,然后进入空指针异常:
11-23 09:58:12.551 19108-19771/com.talkative.reach V/InCallActivity: Pusher:::URL
11-23 09:58:12.598 19108-19771/com.talkative.reach E/AndroidRuntime: FATAL EXCEPTION: pusher-java-client eventQueue
11-23 09:58:12.598 19108-19771/com.talkative.reach E/AndroidRuntime: Process: com.talkative.reach, PID: 19108
11-23 09:58:12.598 19108-19771/com.talkative.reach E/AndroidRuntime: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.content.Context.getPackageName()' on a null object reference
11-23 09:58:12.598 19108-19771/com.talkative.reach E/AndroidRuntime: at android.content.ComponentName.<init>(ComponentName.java:77)
11-23 09:58:12.598 19108-19771/com.talkative.reach E/AndroidRuntime: at android.content.Intent.<init>(Intent.java:4160)
11-23 09:58:12.598 19108-19771/com.talkative.reach E/AndroidRuntime: at com.talkative.reach.Activity_InCall.dialogLaunch(Activity_InCall.java:398)
11-23 09:58:12.598 19108-19771/com.talkative.reach E/AndroidRuntime: at com.talkative.reach.Handler_PusherPrivate.onEvent(Handler_PusherPrivate.java:90)
11-23 09:58:12.598 19108-19771/com.talkative.reach E/AndroidRuntime: at com.pusher.client.channel.impl.ChannelImpl.run(ChannelImpl.java:100)
11-23 09:58:12.598 19108-19771/com.talkative.reach E/AndroidRuntime: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
11-23 09:58:12.598 19108-19771/com.talkative.reach E/AndroidRuntime: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
11-23 09:58:12.598 19108-19771/com.talkative.reach E/AndroidRuntime: at java.lang.Thread.run(Thread.java:818)
eventQueue
是发生异常的线程。
从堆栈跟踪来看,"user land" 代码的最后一段是 com.talkative.reach.Activity_InCall.dialogLaunch(Activity_InCall.java:398)
。
我要解决的几个问题是:
dialogLaunch
中的 context
是静态可访问对象吗?
- 应该在 UI 线程而不是
eventQueue
库线程上访问它吗?参见 runOnUiThread
为什么会出现该错误?如何将此 method/class 中的信息传递给我的另一个 class?推送器 class/code 正确获取数据并正确显示,但是当我尝试从另一个 class 访问其他方法时,它给我以下错误。有任何想法吗? 这是我的推送代码 class Handler_Pusher:
privatechannel.bind("event", new PrivateChannelEventListener() {
@Override
public void onEvent(final String channelName, final String eventName, final String data) {
Log.v(TAG, "Private Test onEvent: " + channelName + " " + eventName + " " + data);
docSyncData = getDocumentUrlExtension(data);
final String URL = DOCUMENT_URL_PREFIX + docSyncData + ".pdf";
Log.v(TAG, "URL:::" + URL);
Activity_InCall.dialogLaunch(URL);
}
@Override
public void onSubscriptionSucceeded(String channelName) {
Log.v(TAG, "Private Channel onSubscriptionSucceeded: " + channelName);
}
@Override
public void onAuthenticationFailure(String message, Exception e) {
Log.v(TAG, "Private Channel onAuthenticationFailure: " + message + ":::" + e);
}
});
这是我试图在 class Activity_InCall:
中调用的方法public static void dialogLaunch(String data){
Log.v(TAG, "Pusher:::" + data);
Intent activityDocSync = new Intent(context, Activity_DocSync.class);
context.startActivity(activityDocSync);
}
这是我看到的 logcat 错误,URL 正常,但随后给了我 "eventQueue" 错误,然后进入空指针异常:
11-23 09:58:12.551 19108-19771/com.talkative.reach V/InCallActivity: Pusher:::URL
11-23 09:58:12.598 19108-19771/com.talkative.reach E/AndroidRuntime: FATAL EXCEPTION: pusher-java-client eventQueue
11-23 09:58:12.598 19108-19771/com.talkative.reach E/AndroidRuntime: Process: com.talkative.reach, PID: 19108
11-23 09:58:12.598 19108-19771/com.talkative.reach E/AndroidRuntime: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.content.Context.getPackageName()' on a null object reference
11-23 09:58:12.598 19108-19771/com.talkative.reach E/AndroidRuntime: at android.content.ComponentName.<init>(ComponentName.java:77)
11-23 09:58:12.598 19108-19771/com.talkative.reach E/AndroidRuntime: at android.content.Intent.<init>(Intent.java:4160)
11-23 09:58:12.598 19108-19771/com.talkative.reach E/AndroidRuntime: at com.talkative.reach.Activity_InCall.dialogLaunch(Activity_InCall.java:398)
11-23 09:58:12.598 19108-19771/com.talkative.reach E/AndroidRuntime: at com.talkative.reach.Handler_PusherPrivate.onEvent(Handler_PusherPrivate.java:90)
11-23 09:58:12.598 19108-19771/com.talkative.reach E/AndroidRuntime: at com.pusher.client.channel.impl.ChannelImpl.run(ChannelImpl.java:100)
11-23 09:58:12.598 19108-19771/com.talkative.reach E/AndroidRuntime: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
11-23 09:58:12.598 19108-19771/com.talkative.reach E/AndroidRuntime: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
11-23 09:58:12.598 19108-19771/com.talkative.reach E/AndroidRuntime: at java.lang.Thread.run(Thread.java:818)
eventQueue
是发生异常的线程。
从堆栈跟踪来看,"user land" 代码的最后一段是 com.talkative.reach.Activity_InCall.dialogLaunch(Activity_InCall.java:398)
。
我要解决的几个问题是:
dialogLaunch
中的context
是静态可访问对象吗?- 应该在 UI 线程而不是
eventQueue
库线程上访问它吗?参见 runOnUiThread