有没有办法让所有活动都可用的功能?

问题描述:

我有一组命令,我希望我的应用程序在重新启动时运行,无论它的活动如何。我知道我需要把onRestart()放入每一个。有没有办法让所有活动都可用的功能?

既然它是一组命令,不管它在做什么活动,有没有一种方法可以让它们都指向一个单一的函数呢?看起来这样会更好,然后不得不复制粘贴命令到每个onRestart()处理程序。如果我也需要更改一组命令,这将会减少很多工作。

根据代码,您有几个选项。

你可以把它作为一个静态函数放在辅助类中:public static void doWork() { .. }这应该是有效的,除非你在做什么取决于在活动中。通常你可以通过它所需要的,就像Context

或者,您可以将Activity扩展为您自己的班级MyActivity,并将作品放置在该onResume中。然后为每个真实活动延伸MyActivity。当您致电super.onResume()时,他们现在会自动完成这项工作。只要你真的想在每个活动中都做同样的事情,并且不要使用诸如ListActivity之类的大量专业活动,这种方式就会奏效。

编辑:

public class MyHelper { 

    public static void doWork() { 
    // do your work here 
    } 

} 

public class MyActivity extends Activity { 
    public void onResume() { 
    super.onResume(); 
    MyHelper.doWork(); 
    } 
} 

一种 “静态方法” 搜索将提供更多的细节。

+0

+1我会用静态方法来处理自己,因为我觉得维护更容易。即使您现在不使用任何专门的“活动”,但如果将来添加任何“活动”,您最终可能会得到一个大的代码重构。 – 2011-02-02 11:34:29

+0

听起来不错。我喜欢“助手类作为静态函数”的方法,因为有些情景我不希望它在certian屏幕上执行这些步骤,而且我已经知道如何测试这些情况,因此我可以放入if语句如果这种情况不存在,请在简历上致电帮助人。但我如何实施帮手?你能给我一个例子或链接吗? – 2011-02-02 22:01:39

从单个类(类似于ActivityBase)推导出所有活动,而这些活动又来自系统提供的Activity。然后在ActivityBase执行onRestart()

它是从头开始重新启动的应用程序吗?或者只是你正在重新启动/恢复的活动?

Application类有一个onCreate()方法,您可以在应用程序中扩展Application以覆盖其行为。只需记住在AndroidManifest.xml中更改应用程序的名称,以便它在启动时启动自定义Application类。此代码将在任何活动启动之前运行。但是,每次活动停止并重新启动时,它都不会运行。如果这就是你需要的,这不会做到这一点。

您也可以实现一个包含initialize()方法或restart()方法的单例类。你只需在onRestart()中调用你想要的每一个活动。听起来这个特殊的代码应该远离你的活动,所以我不认为我会建议扩展Activity来将代码放在那里。