自从我在应用上购买应用后,我在开发控制台中有了ANR:
"main" tid=1 Native
"main" prio=5 tid=1 Native
| group="main" sCount=1 dsCount=0 flags=1 obj=0x72c68710 self=0x7116cc3a00
| sysTid=23379 nice=-4 cgrp=default sched=0/0 handle=0x711b5859b0
| state=S schedstat=( 915352226 193113724 1625 ) utm=57 stm=34 core=2 HZ=100
| stack=0x7ff4300000-0x7ff4302000 stackSize=8MB
| held mutexes=
#00 pc 0000000000068fe4 /system/lib64/libc.so (__ioctl+4)
#01 pc 0000000000024538 /system/lib64/libc.so (ioctl+132)
#02 pc 0000000000061a10 /system/lib64/libbinder.so (_ZN7android14IPCThreadState14talkWithDriverEb+256)
#03 pc 00000000000627a8 /system/lib64/libbinder.so (_ZN7android14IPCThreadState15waitForResponseEPNS_6ParcelEPi+340)
#04 pc 00000000000624c8 /system/lib64/libbinder.so (_ZN7android14IPCThreadState8transactEijRKNS_6ParcelEPS1_j+216)
#05 pc 0000000000056d98 /system/lib64/libbinder.so (_ZN7android8BpBinder8transactEjRKNS_6ParcelEPS1_j+72)
#06 pc 000000000011fc74 /system/lib64/libandroid_runtime.so (???)
#07 pc 000000000093ab84 /system/framework/arm64/boot-framework.oat (Java_android_os_BinderProxy_transactNative__ILandroid_os_Parcel_2Landroid_os_Parcel_2I+196)
at android.os.BinderProxy.transactNative (Native method)
at android.os.BinderProxy.transact (Binder.java:748)
at com.android.vending.billing.IInAppBillingService$Stub$Proxy.getSkuDetails (IInAppBillingService.java:241)
at com.kama_studio.fr.quatreimagesuneidee.GamePlay$33$1.run (GamePlay.java:3766)
at android.app.Activity.runOnUiThread (Activity.java:6152)
at com.kama_studio.fr.quatreimagesuneidee.GamePlay$33.onQueryInventoryFinished (GamePlay.java:3732)
at com.kama_studio.fr.quatreimagesuneidee.util.IabHelper$2$1.run (IabHelper.java:631)
at android.os.Handler.handleCallback (Handler.java:789)
at android.os.Handler.dispatchMessage (Handler.java:98)
at android.os.Looper.loop (Looper.java:251)
at android.app.ActivityThread.main (ActivityThread.java:6572)
at java.lang.reflect.Method.invoke (Native method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run (Zygote.java:240)
at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:767)
代码如下:
IabHelper.QueryInventoryFinishedListener mGotInventoryListener = new IabHelper.QueryInventoryFinishedListener() {
public void onQueryInventoryFinished(final IabResult result, final Inventory inventory) {
runOnUiThread(new Runnable() {
public void run() {
// Toast.makeText(getApplicationContext()," query inventory finished" , Toast.LENGTH_LONG).show();
// Have we been disposed of in the meantime? If so, quit.
if (mHelper == null) {
BoutiqueActive = false;
return;
}
// Is it a failure?
if (result.isFailure()) {
BoutiqueActive = false;
//boutique non dispo
//Toast.makeText(getApplicationContext(), " retrieving inventory failed" + result, Toast.LENGTH_LONG).show();
// complain("Failed to query inventory: " + result);
} else if (result.isSuccess()) {
ArrayList<String> skuList = new ArrayList<String>();
skuList.add(achat00);
skuList.add(achat01);
skuList.add(achat02);
skuList.add(achat03);
skuList.add(achat04);
querySkus.putStringArrayList("ITEM_ID_LIST", skuList);
try {
skuDetails = mService.getSkuDetails(3,
getPackageName(), "inapp", querySkus);
} catch (RemoteException e) {
e.printStackTrace();
}
int response = skuDetails.getInt("RESPONSE_CODE");
if (response == 0) {
ArrayList<String> responseList
= skuDetails.getStringArrayList("DETAILS_LIST");
for (String thisResponse : responseList) {
JSONObject object = null;
try {
object = new JSONObject(thisResponse);
String sku = object.getString("productId");
String price = object.getString("price");
if (sku.equals("item00")) prix0 = price;
else if (sku.equals("item01")) prix1 = price;
else if (sku.equals("item02")) prix2 = price;
else if (sku.equals("item03")) prix3 = price;
else if (sku.equals("item04")) prix4 = price;
} catch (JSONException e) {
e.printStackTrace();
}
}
BoutiqueActive=true;
Noprice=false;
}
else if(response !=0)
{
Noprice=true;
}
//Toast.makeText(getApplicationContext(),"query inventory successfull" , Toast.LENGTH_LONG).show();
/*
* Check for items we own. Notice that for each purchase, we check
* the developer payload to see if it's correct! See
* verifyDeveloperPayload().
*/
// Do we have the premium upgrade?
Purchase premiumPurchase = inventory.getPurchase(achat03);
mIsPremium = (premiumPurchase != null && verifyDeveloperPayload(premiumPurchase));
Boolean alreadyPreums = ReadJson.readBooleanFromFile(getApplicationContext(), false, "savegame.json", "Ads", 0, "Pub_Active");
if (mIsPremium && alreadyPreums) {
ReturnCFG.pubActive = false;
SaveJson.changejson(getApplicationContext(), "savegame.json", "Ads", 0, "Pub_Active", false);
//so do something
}
}
}
});
}
};
导致ANR或错误的行是:
try {
skuDetails = mService.getSkuDetails(3,
getPackageName(), "inapp", querySkus);
} catch (RemoteException e) {
e.printStackTrace();
}
我不知道该怎么办,我什至不知道我是否可以做些什么... 我不认为我必须以异步方式编写此代码,因为它已经是异步方式了...所以我对如何处理一无所知
该错误再次以另一种形式出现:
"main" prio=5 tid=1 Native
| group="main" sCount=1 dsCount=0 obj=0x7302d000 self=0xb5007800
| sysTid=4948 nice=-4 cgrp=apps sched=0/0 handle=0xb6f53ec8
| state=S schedstat=( 0 0 0 ) utm=20804 stm=5217 core=2 HZ=100
| stack=0xbe6d9000-0xbe6db000 stackSize=8MB
| held mutexes=
#00 pc 000000000003b1c4 /system/lib/libc.so (__ioctl+8)
#01 pc 0000000000051c61 /system/lib/libc.so (ioctl+14)
#02 pc 00000000000204fb /system/lib/libbinder.so (android::IPCThreadState::talkWithDriver(bool)+138)
#03 pc 0000000000020b07 /system/lib/libbinder.so (android::IPCThreadState::waitForResponse(android::Parcel*, int*)+42)
#04 pc 0000000000020ca9 /system/lib/libbinder.so (android::IPCThreadState::transact(int, unsigned int, android::Parcel const&, android::Parcel*, unsigned int)+124)
#05 pc 000000000001be8f /system/lib/libbinder.so (android::BpBinder::transact(unsigned int, android::Parcel const&, android::Parcel*, unsigned int)+30)
#06 pc 0000000000086677 /system/lib/libandroid_runtime.so (???)
#07 pc 0000000000aa2979 /data/dalvik-cache/arm/system@framework@boot.oat (Java_android_os_BinderProxy_transactNative__ILandroid_os_Parcel_2Landroid_os_Parcel_2I+144)
at android.os.BinderProxy.transactNative (Native method)
at android.os.BinderProxy.transact (Binder.java:519)
at com.android.vending.billing.IInAppBillingService$Stub$Proxy.getSkuDetails (IInAppBillingService.java:241)
at com.kama_studio.fr.quatreimagesuneidee.GamePlay$31.onQueryInventoryFinished (GamePlay.java:3763)
at com.kama_studio.fr.quatreimagesuneidee.util.IabHelper$2$1.run (IabHelper.java:631)
at android.os.Handler.handleCallback (Handler.java:739)
at android.os.Handler.dispatchMessage (Handler.java:95)
at android.os.Looper.loop (Looper.java:135)
at android.app.ActivityThread.main (ActivityThread.java:5311)
at java.lang.reflect.Method.invoke! (Native method)
at java.lang.reflect.Method.invoke (Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:908)
at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:703)
"main" prio=5 tid=1 Native
| group="main" sCount=1 dsCount=0 obj=0x750f19d8 self=0xad484400
| sysTid=30275 nice=-4 cgrp=default sched=0/0 handle=0xb0322534
| state=S schedstat=( 0 0 0 ) utm=291 stm=97 core=3 HZ=100
| stack=0xbe085000-0xbe087000 stackSize=8MB
| held mutexes=
#00 pc 0000000000048a98 /system/lib/libc.so (__ioctl+8)
#01 pc 000000000001adf7 /system/lib/libc.so (ioctl+38)
#02 pc 000000000003cc55 /system/lib/libbinder.so (_ZN7android14IPCThreadState14talkWithDriverEb+168)
#03 pc 000000000003d62f /system/lib/libbinder.so (_ZN7android14IPCThreadState15waitForResponseEPNS_6ParcelEPi+238)
#04 pc 000000000003655d /system/lib/libbinder.so (_ZN7android8BpBinder8transactEjRKNS_6ParcelEPS1_j+36)
#05 pc 000000000009adcd /system/lib/libandroid_runtime.so (???)
#06 pc 0000000000622661 /system/framework/arm/boot-framework.oat (Java_android_os_BinderProxy_transactNative__ILandroid_os_Parcel_2Landroid_os_Parcel_2I+140)
at android.os.BinderProxy.transactNative (Native method)
at android.os.BinderProxy.transact (Binder.java:615)
at com.android.vending.billing.IInAppBillingService$Stub$Proxy.getSkuDetails (IInAppBillingService.java:241)
at com.kama_studio.fr.quatreimagesuneidee.GamePlay$31.onQueryInventoryFinished (GamePlay.java:3763)
at com.kama_studio.fr.quatreimagesuneidee.util.IabHelper$2$1.run (IabHelper.java:631)
at android.os.Handler.handleCallback (Handler.java:751)
at android.os.Handler.dispatchMessage (Handler.java:95)
at android.os.Looper.loop (Looper.java:154)
at android.app.ActivityThread.main (ActivityThread.java:6311)
at java.lang.reflect.Method.invoke! (Native method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:872)
at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:762)