android Inapp计费:删除广告

android Inapp计费:删除广告,android,in-app-purchase,Android,In App Purchase,在我的android应用程序中,我在一些活动的屏幕底部显示一些小广告横幅。我现在想让用户有机会通过应用内计费删除此广告 实现这一点的好方法是什么 由于广告是在一些活动开始后立即显示的,因此每次我显示广告时查询谷歌服务中购买的物品似乎很糟糕,因为连接到该服务需要一些时间。 我曾考虑在启动屏幕上查询一次谷歌服务,如果购买了adfree,则在我的应用程序上下文Singleton中使用布尔值来存储信息。在activitiesonCreate中,我检查booleanisPremium是否为真。如果是这种情

在我的android应用程序中,我在一些活动的屏幕底部显示一些小广告横幅。我现在想让用户有机会通过应用内计费删除此广告

实现这一点的好方法是什么

由于广告是在一些活动开始后立即显示的,因此每次我显示广告时查询谷歌服务中购买的物品似乎很糟糕,因为连接到该服务需要一些时间。 我曾考虑在启动屏幕上查询一次谷歌服务,如果购买了adfree,则在我的应用程序上下文Singleton中使用布尔值来存储信息。在activities
onCreate
中,我检查boolean
isPremium
是否为真。如果是这种情况,我会将adview的可见性设置为false
findviewbyd(R.id.adview)。setVisibility(false)

这安全吗?
我不确定ApplicationManager是否可以在不终止所有活动的情况下终止存储变量的我的ApplicationContext。

使用
布尔值
并将变量设置为
null
。如果为
null
(lazy init),则只查询一次。如果您的应用程序被终止,它将以
null
开始,您只需再次查询即可。实际上删除
AdViews
可能也是一个更好的主意,否则它们将继续发出广告请求,您将获得非常低的CTR

这是购买后删除广告的最佳方式

if (!bp.isPurchased("prime")  {
        mAdView = (AdView) findViewById(R.id.adView1);
        AdRequest adRequest = new AdRequest.Builder().build();
        mAdView.loadAd(adRequest);


    }else if(bp.isPurchased("prime") ){
        mAdView = (AdView) findViewById(R.id.adView1);

        mAdView.setVisibility(View.GONE);

    }

我在用图书馆

我也想知道。听起来不错。由于我在启动后立即需要这些数据,我会将它们与SharedReferences结合使用。每次检查BillingService时,我都会更新一个sharedPref布尔值,以便返回到布尔值是否为null,但我需要知道是否购买了premium。由于Pref经常更新,因此也应避免用户操作。我会把这些建议彻底删除。谢谢你的提示(我想如果看不见他们会停止升级,但没有检查)@nikolay elenkov你知道我需要手动报告哪些国家并为谷歌的应用内账单缴纳增值税吗?我读到日本需要手动报告。还有其他人吗?如果你能阅读/回答我的问题,我会很高兴