我有一个AsyncTask应该检查网络访问主机名.但是doInBackground()永远不会超时.有人有线索吗?
public class HostAvailabilityTask extends AsyncTask<String, Void, Boolean> {
private Main main;
public HostAvailabilityTask(Main main) {
this.main = main;
}
protected Boolean doInBackground(String... params) {
Main.Log("doInBackground() isHostAvailable():"+params[0]);
try {
return InetAddress.getByName(params[0]).isReachable(30);
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return false;
}
protected void onPostExecute(Boolean... result) {
Main.Log("onPostExecute()");
if(result[0] == false) {
main.setContentView(R.layout.splash);
return;
}
main.continueAfterHostCheck();
}
}
Run Code Online (Sandbox Code Playgroud) 我坚持与谷歌在应用V3 - 我测试了购买无消耗(例如,当购买和消费之间的应用程序崩溃) - 现在我没有找到一个出路.
如果我再次尝试购买,它会说"你已经拥有该商品".但是,当我测试所有权时,它说我不拥有它:
Inventory inv = mHelper.queryInventory(false, null);
inv.getPurchase(sku); // null
inv.hasPurchase(sku); // false
Run Code Online (Sandbox Code Playgroud)
我也不能吃东西,因为我没有购买消费.怎么在这里?
编辑 重现如下:购买应用程序耗材,然后禁用互联网连接.之后,您无法再购买该产品几个小时.刚刚从Play商店(Diamond Digger Saga)的流行应用程序进行测试,我的行为完全相同.真的没有可能避免/解决这个问题吗?
如果用户没有wifi或3g连接,我不希望我的应用程序崩溃.我如何在运行时在我的应用程序中捕获它?