Android:在不同的 Activity 中重复使用相同的 View 对象(案例是关于广告横幅)

标签 android view android-activity ads

我想在不同的 Activity 中重用同一个 View 对象(不是 View 类,也不是 xml 文件,我指的是内存中的对象)。

我差一点就完成了。当然,重要的是上下文。

我尝试使用应用程序上下文。它几乎可以工作,但是当我点击我在不同 Activity 之间传输的 View ,并尝试从它(或链接)启动另一个应用程序时,它崩溃了。 (我不记得确切的崩溃,但如果你需要的话,我会挖掘它)。

我尝试了一些 Activity ,我不介意泄漏一次,并将其作为上下文提供。它有效,实际上一切正常,直到我开始在 ViewFlipper 中出现奇怪的异常。

我的问题是,这种复用真的可行吗?如何做到稳定?你有这方面的经验吗?

非常感谢, 丹

最佳答案

我谨记,您可以承担泄露 1 个 Activity 的后果,因为这是我所知道的唯一解决方案: 声明一个静态 View ,例如在您的第一个 Activity (您正在请求广告)中使用 myAdView。现在您可以在每个 Activity 转换中添加和删除此 myAdView。当然,您必须在单独的 Activity 中为您的广告维护单独的 LinearLayouts,我们将在其中添加/删除 myAdView 例如。假设您要从 Activity A 转到 B,然后在 A 的 onPause 中删除 myAdView:

private LinearLayout layoutAd;
layoutAd = (LinearLayout) findViewById(R.id.layout_ad); // from A's xml
protected void onPause() {
    super.onPause();
    layoutAd.removeView(FirstActivity.adBannerView);
}

并在 B 的 onResume 中添加相同的(FirstActivity 的)myAdView:

private LinearLayout layoutAd;
layoutAd = (LinearLayout) findViewById(R.id.layout_ad);  // from B's xml
protected void onResume() {
      super.onResume();
      layoutAd.addView(FirstActivity.adBannerView);
}

希望这能在一定程度上解决您的问题。

关于Android:在不同的 Activity 中重复使用相同的 View 对象(案例是关于广告横幅),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8790426/

相关文章:

java - 如何在 Android 中创建固定操作栏并在其下方启动新 Activity

java - 使用 ZXing 编码和解码 byte[]

mysql - View 上的 MYSQL SELECT 性能问题

java - 图库 View 中的空白图像 – Android

android - 防止多次启动相同的 Activity

android - 如何修复 "BUILD FAILED"android react native 说错误 : package android. support.annotation 不存在

java - 如何在android中为除屏幕上的元素之外的任何地方设置onClickListener

安卓。按标签查找 View

java - 使用两个 Activity [ANDROID] 显示消息输出的问题

android - Activity 中 onBackPressed() 的默认实现是什么