ih8*_*ie8 7 android memory-leaks command-pattern java-memory-model android-activity
在阅读了@RomainGuy 的避免内存泄漏文章后,我意识到我当前的Android应用程序一直困扰着传递应用程序主要活动的错误.所以每当我,我可以简单地用Activity.getApplicationContext()替换该活动参数.
但是我的应用程序中的某些类仍然需要运行只能是应用程序主要活动成员的方法.
因此我想到可能使用命令模式来解决这个限制.
问题是,如果我们看一下这个例子:
public class SomeCommandExecuableOnlyByActivity implements Command
{
public void execute(Object data)
{
doIt( ((MyActivity)data).getWindow() );
}
}
Run Code Online (Sandbox Code Playgroud)
我再次进入需要传递活动的死胡同(这次伪装成Object数据).
如何摆脱这种"鸡蛋和鸡蛋"的局面?
有没有更好的方法来解决这个问题?
我认为您在这里可能缺少的是适当的关注点分离。如果您说您必须将主要活动传递给其他活动才能调用其上的某些功能,那么在我看来您的应用程序的架构存在一些基本的设计缺陷。
我无法判断是否在这里使用命令模式,但我通常会做的是识别那些需要共享访问的方法,将它们移动到一个单独的类,然后在需要此功能的所有活动中保留该类的单独实例功能,或者如果您需要共享实例状态,请在全局应用程序上下文中创建它并提供对其的全局访问路径(这不是可取的,但是如果没有像 RoboGuice 这样的 DI 框架,则很难在 Android 上实现 DI,因为构造函数是渲染的空白。)
在我看来,在一个设计良好的Android应用程序中,Activity是没有业务逻辑的,只提供改变UI状态的操作。用户界面的流程或任何其他计算将留给其他类。模型-视图-呈现器模式在这里非常有助于保持代码按职责结构化。
如果不让我们更深入地了解您到底想要实现什么目标,就很难给出具体的建议。
| 归档时间: |
|
| 查看次数: |
2140 次 |
| 最近记录: |