如何理解QueryInventoryFinishedListener真的完成了

时间:2014-04-29 10:42:59

标签: android android-asynctask in-app-billing

在程序中,我正在使用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()课,有时一些优质的东西显示为尚未购买。我想阻止这个。你有什么想法吗?

1 个答案:

答案 0 :(得分:0)

"在QueryInventoryFinishedListener之后我想更改用户界面。" 那你为什么不这样做呢?

您正在更新onPostExecute中的UI,而不是onQueryInventoryFinished ...为什么不呢?

此外,.queryInventoryAsync()在后台运行,这就是为什么它被称为异步...不需要围绕它的另一个后台线程。