android singleton vs静态方法

tom*_*l18 2 java android design-patterns

我需要加载一些文件并将它们存储在静态变量中.

几乎每个Activity都需要load和getter方法.

我打算让这些方法保持静态,但是一些博客不喜欢它.

两种方法的主要优点和缺点如下.

独生子

优点:保持多态性的能力.

缺点:必须在每个Activity中调用getInstantace方法.

静态方法反之亦然.

请指导我在两种方法或任何其他方法之间进行选择.

任何帮助,将不胜感激.

Abh*_*nda 9

我会避免在Android中使用静态变量,因为如果您的应用暂停且手机资源不足,Android会经常清除您班级中的所有静态数据,从而导致意外的空指针异常.在Google上搜索"Android Static Null"以获得更好的解释.

无论哪种方式(静态方法或单身人士),您都应该确保您的应用能够保存状态并在Android清除静态变量时恢复它.

  • 那个回答,用android static null,只是让我的一天.你只是喜欢找到的那些隐藏的大脑升级之一. (2认同)

aro*_*oth 7

你可以找到一些非常不喜欢任何东西的"博客".静态方法没有任何问题,只要它们操作的任何状态都是方法本地/每次调用传入(同一警告适用于单例上的实例方法).

两种方法都应该没问题,只需选择你喜欢的方法即可.作为一般经验法则,如果您的单例实例不会保留在运行时可能具有可变性的任何状态,请使用静态方法.否则,如果单例意味着保持状态而不仅仅是作为少数实用方法的存储库,那么将其设为单例.

反对使用我遇到的静态方法的唯一合理的论点是,静态方法对于单元测试目的的模拟是有问题的.但我的猜测是你可能没有进行模拟单元测试,而且我认为使用模拟对象进行测试的价值通常被夸大了,当你看到它出来的值相对于设置的工作量时测试用例.