有没有办法让所有活动都可用的功能?
我有一组命令,我希望我的应用程序在重新启动时运行,无论它的活动如何。我知道我需要把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();
}
}
一种 “静态方法” 搜索将提供更多的细节。
从单个类(类似于ActivityBase
)推导出所有活动,而这些活动又来自系统提供的Activity
。然后在ActivityBase
执行onRestart()
。
它是从头开始重新启动的应用程序吗?或者只是你正在重新启动/恢复的活动?
Application类有一个onCreate()方法,您可以在应用程序中扩展Application以覆盖其行为。只需记住在AndroidManifest.xml中更改应用程序的名称,以便它在启动时启动自定义Application类。此代码将在任何活动启动之前运行。但是,每次活动停止并重新启动时,它都不会运行。如果这就是你需要的,这不会做到这一点。
您也可以实现一个包含initialize()方法或restart()方法的单例类。你只需在onRestart()中调用你想要的每一个活动。听起来这个特殊的代码应该远离你的活动,所以我不认为我会建议扩展Activity来将代码放在那里。
+1我会用静态方法来处理自己,因为我觉得维护更容易。即使您现在不使用任何专门的“活动”,但如果将来添加任何“活动”,您最终可能会得到一个大的代码重构。 – 2011-02-02 11:34:29
听起来不错。我喜欢“助手类作为静态函数”的方法,因为有些情景我不希望它在certian屏幕上执行这些步骤,而且我已经知道如何测试这些情况,因此我可以放入if语句如果这种情况不存在,请在简历上致电帮助人。但我如何实施帮手?你能给我一个例子或链接吗? – 2011-02-02 22:01:39