有没有办法制作一个可供所有活动使用的功能?

时间:2011-02-02 01:58:41

标签: android function android-activity global restart

我有一组命令,我希望我的应用程序在重新启动时运行,无论它在什么活动上运行。我知道我需要在每个人中加onRestart()

因为它是同一组命令而不管它是什么活动,有没有一种方法可以让它们都引用单个函数呢?看起来好像必须将命令复制粘贴到每个onRestart()处理程序中。如果我还需要更改命令集,那将会少得多。

3 个答案:

答案 0 :(得分:1)

根据代码的不同,您有几种选择。

你可以把它作为一个静态函数放在一个辅助类中: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();
  }
}

搜索“静态方法”将提供更多详细信息。

答案 1 :(得分:0)

从单个类(类似ActivityBase)派生所有活动,而这些类又来自系统提供的Activity。然后在onRestart()中实施ActivityBase

答案 2 :(得分:0)

您的应用程序是否从头开始重启?或者只是重启/恢复的活动?

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

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