在程序中,我正在使用In app billing。在QueryInventoryFinishedListener
之后我想更改用户界面。所以我这样做了。但它给出了这个错误。
@Override
protected Void doInBackground(Void... params) {
mHelper.queryInventoryAsync(mGotInventoryListener);
return null;
}
@Override
protected void onPostExecute(Void result) {
updateUserinterface();
super.onPostExecute(result);
}
E / AndroidRuntime(26593):致命异常:AsyncTask#1 E / AndroidRuntime(26593):java.lang.RuntimeException:执行doInBackground()时发生错误 E / AndroidRuntime(26593):在android.os.AsyncTask $ 3.done(AsyncTask.java:299) E / AndroidRuntime(26593):at java.util.concurrent.FutureTask $ Sync.innerSetException(FutureTask.java:273) E / AndroidRuntime(26593):at java.util.concurrent.FutureTask.setException(FutureTask.java:124) E / AndroidRuntime(26593):at java.util.concurrent.FutureTask $ Sync.innerRun(FutureTask.java:307) E / AndroidRuntime(26593):at java.util.concurrent.FutureTask.run(FutureTask.java:137) E / AndroidRuntime(26593):在android.os.AsyncTask $ SerialExecutor $ 1.run(AsyncTask.java:230) E / AndroidRuntime(26593):at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076) E / AndroidRuntime(26593):at java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:569) E / AndroidRuntime(26593):at java.lang.Thread.run(Thread.java:856) E / AndroidRuntime(26593):引起:java.lang.RuntimeException:无法在未调用Looper.prepare()的线程内创建处理程序
如果我没有使用doInBacground()
课,有时一些优质的东西显示为尚未购买。我想阻止这个。你有什么想法吗?
答案 0 :(得分:0)
"在QueryInventoryFinishedListener之后我想更改用户界面。" 那你为什么不这样做呢?
您正在更新onPostExecute中的UI,而不是onQueryInventoryFinished ...为什么不呢?
此外,.queryInventoryAsync()在后台运行,这就是为什么它被称为异步...不需要围绕它的另一个后台线程。