Open ghost opened 9 years ago
参考になるかわかりませんが、前からこういうエラーが出続けています 濡れ衣の可能性も大いにありますが、NCMBのSDKで何か起きているのではないかと追っては居るのですが未だによくわかっていません
アプリはAPI15以上にしていて 4.0.3 と 4.0.4 でしかこのエラーが出ないので、何か有るのではないかとは思っています
java.lang.IllegalStateException: Fatal Exception thrown on Scheduler.Worker thread. at rx.internal.schedulers.ScheduledAction.run() at android.os.Handler.handleCallback(Handler.java:605) at android.os.Handler.dispatchMessage(Handler.java:92) at android.os.Looper.loop(Looper.java:137) at android.app.ActivityThread.main(ActivityThread.java:4441) at java.lang.reflect.Method.invokeNative(Method.java) at java.lang.reflect.Method.invoke(Method.java:511) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:823) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:590) at dalvik.system.NativeStart.main(NativeStart.java) Caused by: java.lang.ExceptionInInitializerError at com.nifty.cloud.mb.NCMBInstallation.getRegistrationIdInBackground() at jp.co.golfdigest.tourapp.net.NcmbService$1.call() at jp.co.golfdigest.tourapp.net.NcmbService$1.call() at rx.Observable$1.call() at rx.Observable$1.call() at rx.Observable.create() at rx.internal.operators.OperatorMerge$MergeSubscriber.onStart() at rx.internal.operators.OperatorMerge$MergeSubscriber.onNext() at rx.internal.operators.OperatorMerge$MergeSubscriber.onNext() at rx.internal.operators.OnSubscribeFromIterable$IterableProducer.request() at rx.Subscriber.add() at rx.internal.operators.OnSubscribeFromIterable.call() at rx.internal.operators.OnSubscribeFromIterable.call() at rx.Observable$1.call() at rx.Observable$1.call() at rx.Observable.create() at rx.internal.operators.OperatorSubscribeOn$1$1.call() at rx.internal.schedulers.ScheduledAction.run() at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:442) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305) at java.util.concurrent.FutureTask.run(FutureTask.java:137) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:150) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:264) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569) at java.lang.Thread.run(Thread.java:856) Caused by: java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare() at android.os.Handler.(Handler.java:121) at android.os.AsyncTask$InternalHandler.(AsyncTask.java:607) at android.os.AsyncTask$InternalHandler.(AsyncTask.java:607) at android.os.AsyncTask.(AsyncTask.java:190) at com.nifty.cloud.mb.NCMBInstallation.getRegistrationIdInBackground() at jp.co.golfdigest.tourapp.net.NcmbService$1.call() at jp.co.golfdigest.tourapp.net.NcmbService$1.call() at rx.Observable$1.call() at rx.Observable$1.call() at rx.Observable.create() at rx.internal.operators.OperatorMerge$MergeSubscriber.onStart() at rx.internal.operators.OperatorMerge$MergeSubscriber.onNext() at rx.internal.operators.OperatorMerge$MergeSubscriber.onNext() at rx.internal.operators.OnSubscribeFromIterable$IterableProducer.request() at rx.Subscriber.add() at rx.internal.operators.OnSubscribeFromIterable.call() at rx.internal.operators.OnSubscribeFromIterable.call() at rx.Observable$1.call() at rx.Observable$1.call() at rx.Observable.create() at rx.internal.operators.OperatorSubscribeOn$1$1.call() at rx.internal.schedulers.ScheduledAction.run() at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:442) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305) at java.util.concurrent.FutureTask.run(FutureTask.java:137) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:150) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:264) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569) at java.lang.Thread.run(Thread.java:856)
yskfjさん、ご回答ありがとうございます。 SDKの不具合(?)でしょうか? 何はともあれ僕も原因が全くわからないです......^^; 僕ももう少し原因を調べてみたいと思います。
現在ダッシュボードではなくアプリからプッシュ通知を送信しているのですが、プッシュ通知の送信処理をした直後に(この段階ではまだプッシュ通知は送られてないです)アプリを終了させて少し待つと、「問題が発生したため、アプリを終了します。」とのダイアログが出てきます。そしてAndroid Studioのログを見ると、「java.lang.RuntimeException: You must call NCMB.initialize(context, oauthKey, oauthSecret) before using the NCMB library.」というメッセージが出ています。これはアプリからプッシュ通知の送信処理をしているにもかかわらず、そのアプリが終了してしまってプッシュ通知が送られても処理ができないからなのかなと個人的に解釈しているのですが、このエラーを回避するにはどうしたらいいのでしょうか? また、プッシュ通知の送信処理を行ってから実際にプッシュ通知を受信するまで、結構タイムラグがあります。これはそういうものなのでしょうか?送信処理をしてすぐに受け取れるようにスピードを速めたりはできないでしょうか? 色々とすみませんが、どなたか分かる方がいれば教えていただきたいです。よろしくお願いします。