gpt4 book ai didi

android - ViewPager 中的全屏广告

转载 作者:行者123 更新时间:2023-11-29 01:35:42 25 4
gpt4 key购买 nike

我有带幻灯片的 ViewPager。 在每第 5 张幻灯片之后,我想展示全屏广告。我正在使用 Flurry 进行广告服务。我已经成功添加了广告,它们正在运行。

问题:广告加载速度太慢。当用户切换到第 5 张幻灯片时,广告大约需要 3-4 秒才能显示。

我的方法:

  1. 我尝试将获取代码放在onStart 方法中以加快加载速度,但随后广告就不再出现了。
  2. 每次 viewpager 更改幻灯片时,包含广告的 fragment 都会被销毁,然后在新幻灯片中它必须重新连接到 Flurry。我试图将连接放在启动应用程序的主要 Activity 中,以便更早连接,但在 fragment 中看不到连接。

    public class CardFragment extends Fragment {

    private final String kLogTag = "FlurryAdServingAPI";

    Card mCard;
    TextView mTextView;
    private ViewPager mViewPager;
    private MenuItem mAddToFavorite;
    private AudioPlayer mPlayer = new AudioPlayer();

    private FlurryAdInterstitial mFlurryAdInterstitial = null;
    private String mAdSpaceName = "12thcard";
    private FrameLayout mAdLayout;


    @Override
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setHasOptionsMenu(true);
    mCard = (Card) getArguments().getSerializable(EXTRA_CARD_ID);
    GameManager.get(getActivity()).changeCardTimesDisplayed(mCard);
    mViewPager = (ViewPager) getActivity().findViewById(R.id.viewPager);
    mFlurryAdInterstitial = new FlurryAdInterstitial(getActivity(), mAdSpaceName);
    mFlurryAdInterstitial.setListener(interstitialAdListener);

    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState) {
    View v = inflater.inflate(R.layout.fragment_card, parent, false);
    mAdLayout = (FrameLayout)v.findViewById(R.id.bannerframe);
    if(mViewPager.getCurrentItem()%5 == 0) {
    Log.i("FluryTag", "Show ad");
    FlurryAds.fetchAd(getActivity(), mAdSpaceName, mAdLayout, FlurryAdSize.FULLSCREEN);
    FlurryAds.displayAd(getActivity(), mAdSpaceName, mAdLayout);
    }
    mTextView = (TextView) v.findViewById(R.id.questionText);
    mTextView.setText(mCard.getText());
    return v;
    }

    @Override
    public void onDestroy() {
    super.onDestroy();
    mPlayer.stop();
    }

    public void onStart() {
    super.onStart();
    try {
    Log.d(kLogTag, "onStartSession: "+ AppConstants.FLURRY_API_KEY);
    FlurryAgent.onStartSession(getActivity(), AppConstants.FLURRY_API_KEY);
    mFlurryAdInterstitial.fetchAd();
    } catch (Exception e) {
    Log.e(kLogTag, e.getMessage());
    }
    }
    public void onStop() {
    super.onStop();
    FlurryAgent.onEndSession(getActivity());
    mFlurryAdInterstitial.destroy();
    Log.d(kLogTag, "onEndSession");
    }
    }

    FlurryAdinterstitialListener

    FlurryAdInterstitialListener interstitialAdListener = new FlurryAdInterstitialListener() {

    @Override
    public void onFetched(FlurryAdInterstitial adInterstitial) {
    Log.d(kLogTag, "onFetched( " + adInterstitial + " )");
    adInterstitial.displayAd();
    }
    @Override
    public void onError(FlurryAdInterstitial adInterstitial, FlurryAdErrorType adErrorType, int errorCode) {
    Log.d(kLogTag, "onError( " + adInterstitial + " )");
    Log.d(kLogTag, "onError adErrorType( " + adErrorType + " )");
    Log.d(kLogTag, "onError errorCode( " + errorCode + " )");
    adInterstitial.destroy();
    }
    //..
    //the remainder of listener callbacks
    };

想法:我走错方向了吗?我的意思是 ViewPager 的本质是创建和丢弃 fragment ,如果每个 fragment 都需要时间连接到服务、获取广告,然后显示。也许,我不应该在 ViewPager 中展示广告。

最佳答案

如果有人想知道。我无法用 Flurry 解决问题。最终,我改用 AdMob 来解决广告加载缓慢的问题。

关于android - ViewPager 中的全屏广告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28255960/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com