防止活动的多个实例化

时间:2015-01-31 22:25:28

标签: android

是否可以制作活动单身人士? 我发现很多资源只能告诉我使用android:launchMode="singleInstance"singleTask,但我只能将构造函数调用一次。

理想情况下,我希望能够指定自定义构造函数/构建器方法,例如getInstance()

2 个答案:

答案 0 :(得分:2)

您可以将参考文献存储在Application而不是Activity中。应用程序类事实上是一个单例。您只需要定义访问方法。

public class BaseApplication extends Application {

  private static BaseApplication sInstance = null;

  public synchronized static BaseApplication getInstance() {
    return sInstance;
  }

  public synchronized static void setInstance(BaseApplication app) {
    sInstance = app;
  }

  public BaseApplication() {
  }

  @Override
  public void onCreate() {
    super.onCreate();
    setInstance(this);
}

现在您可以通过拨打BaseApplication.getInstance()来访问它。作为奖励,Application扩展Context,所以现在您可以随时随地获得应用程序上下文引用(除了扩充布局外,几乎可以安全地使用它)。

不要忘记将此类定义为清单中的基本应用程序类:

<application
    android:name="com.yourapp.BaseApplication">

答案 1 :(得分:1)

通常他们按如下方式行事:

1)定义Activity状态

的组成部分

2)将状态保存在onSaveInstanceState

3)恢复onCreateonRestoreInstanceState

中的状态