了解android文档:处理运行时片段“不应传递绑定到活动的对象”

LongDoo123测试

我是编程的新手,方向改变时遇到麻烦。如有任何想法,我将不胜感激。
这是关于官方android文档的特定问题,请不要将此问题重复报告,并向我展示一个通用的处理运行时线程。

阅读文档后,我不确定下面引用的部分。

我的问题:如果我有一个在TextView中显示当前值的计时器,这是否意味着我根本不应该使用fragmant来保留该对象?
还是仅仅意味着我应该将fragmant与活动完全分开?

Android文档:

警告:虽然可以存储任何对象,但绝对不要传递与活动相关的对象,例如Drawable,Adapter,View或与Context相关联的任何其他对象。如果这样做,它将泄漏原始活动实例的所有视图和资源。(泄漏的资源意味着您的应用程序将保留它们,并且它们不能被垃圾回收,因此可能会丢失大量内存。)

https://developer.android.com/guide/topics/resources/runtime-changes.html#RetainingAnObject

背景资料:

我的应用程序:(几个)间隔计时器。
如果在运行时发生方向更改,我想保留计时器的显示。

首先,我在表现形式中使用了拙劣的解决方案,但它会导致问题,因此想出了为什么不尝试彻底解决问题的方法。
如果无法完成,那么极有可能让用户决定他或他喜欢的方向,然后在计时器运行时对其进行修复。

板球运动员

说白了,你不应该给一个参考TextViewTimer如果愿意,您可以阅读内存泄漏的信息,但是该引用提供了一个很好的理由……“您的应用程序保留了这些泄漏,因此无法对其进行垃圾收集,因此可能会丢失大量内存”

不过,您可以使用Timer中的接口。

public class MyTimer extends Timer {

    public interface TextChangeListener {
        public void onTextChange(String text);
    }

    private MyTimer.TextChangeListener listener;

    public MyTimer(TextChangeListener listener) {
        this.listener = listener;
    }

    @Override
    public void schedule(...) { // TODO: Pick which one to override
        super.schedule(...); // TODO: Use the same params
        if (listener != null) {
            listener.onTextChange("Some text");
        }
    }
}

然后,只需实现该接口并启动计时器

public class MainActivity extends AppCompatActivity
      implements MyTimer.TextChangeListener  {

    private TextView textView;

    @Override
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        setContentView(R.layout.activity_main);
        // TODO: textView = findViewById(R.id.textView);
        Timer t = new MyTimer(this); // 'this' refers to the interface
        // TODO: Start timer
    }

    public void onTextChange(String text) {
        textView.setText(text);
    }

}

如果您需要处理方向更改,那么我相信该链接会讨论使用onSaveInstanceStateonRestoreInstanceState方法

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将方法绑定到对象运行时后期绑定

来自分类Dev

Dotvvm 运行时绑定到“对象”类型

来自分类Dev

将对象从我的活动传递到片段

来自分类Dev

将对象从片段传递到活动

来自分类Dev

Android,将Extras从活动传递到片段活动再到片段

来自分类Dev

Silverlight运行时绑定到自定义依赖项对象

来自分类Dev

如何在运行时将方法绑定到python中的对象?

来自分类Dev

C#在运行时绑定事件时将附加参数传递给事件处理程序

来自分类Dev

如何将数组列表对象从活动传递到android中的片段

来自分类Dev

片段的onCreate()方法中的Android应用运行时错误

来自分类Dev

如何在Android运行时添加片段

来自分类Dev

片段的onCreate()方法出现Android应用运行时错误

来自分类Dev

如何在Android运行时添加片段

来自分类Dev

片段无法在 android 中的运行时更改

来自分类Dev

将图像从片段传递到活动-gettin空对象

来自分类Dev

将复杂对象列表从活动传递到片段

来自分类Dev

将复杂对象列表从活动传递到片段

来自分类Dev

什么是运行时绑定?

来自分类Dev

可以在运行时填充 Android 活动吗?

来自分类Dev

Android 清单活动名称生成运行时异常

来自分类Dev

Android 应用程序在运行时“不幸地停止”。错误是没有找到处理意图的活动

来自分类Dev

当应用程序不在设备上运行时,FCM打开活动和调用片段

来自分类Dev

在Android中将位置数据从片段传递到活动

来自分类Dev

错误将参数从活动传递到android中的片段

来自分类Dev

在Android中将数据从活动传递到片段无法正常工作

来自分类Dev

将参数从活动传递到android中的片段时出错

来自分类Dev

Android如何将对象用户传递给活动的片段

来自分类Dev

了解运行时间的重复

来自分类Dev

将对象从活动传递到ViewPager,然后传递到片段

Related 相关文章

  1. 1

    将方法绑定到对象运行时后期绑定

  2. 2

    Dotvvm 运行时绑定到“对象”类型

  3. 3

    将对象从我的活动传递到片段

  4. 4

    将对象从片段传递到活动

  5. 5

    Android,将Extras从活动传递到片段活动再到片段

  6. 6

    Silverlight运行时绑定到自定义依赖项对象

  7. 7

    如何在运行时将方法绑定到python中的对象?

  8. 8

    C#在运行时绑定事件时将附加参数传递给事件处理程序

  9. 9

    如何将数组列表对象从活动传递到android中的片段

  10. 10

    片段的onCreate()方法中的Android应用运行时错误

  11. 11

    如何在Android运行时添加片段

  12. 12

    片段的onCreate()方法出现Android应用运行时错误

  13. 13

    如何在Android运行时添加片段

  14. 14

    片段无法在 android 中的运行时更改

  15. 15

    将图像从片段传递到活动-gettin空对象

  16. 16

    将复杂对象列表从活动传递到片段

  17. 17

    将复杂对象列表从活动传递到片段

  18. 18

    什么是运行时绑定?

  19. 19

    可以在运行时填充 Android 活动吗?

  20. 20

    Android 清单活动名称生成运行时异常

  21. 21

    Android 应用程序在运行时“不幸地停止”。错误是没有找到处理意图的活动

  22. 22

    当应用程序不在设备上运行时,FCM打开活动和调用片段

  23. 23

    在Android中将位置数据从片段传递到活动

  24. 24

    错误将参数从活动传递到android中的片段

  25. 25

    在Android中将数据从活动传递到片段无法正常工作

  26. 26

    将参数从活动传递到android中的片段时出错

  27. 27

    Android如何将对象用户传递给活动的片段

  28. 28

    了解运行时间的重复

  29. 29

    将对象从活动传递到ViewPager,然后传递到片段

热门标签

归档