gpt4 book ai didi

android - 将 Activity 视为单例对我来说安全吗

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:40:45 25 4
gpt4 key购买 nike

大多数时候,在设计桌面应用程序时,为了方便起见,我喜欢将主应用程序设为单例。我可以轻松访问应用程序的数据和方法,而无需传递主要应用程序引用。

public class MainFrame extends javax.swing.JFrame {
// Private constructor is sufficient to suppress unauthorized calls to the constructor
private MainFrame()
{
}

/**
* MainFrameHolder is loaded on the first execution of Singleton.getInstance()
* or the first access to MainFrameHolder.INSTANCE, not before.
*/
private static class MainFrameHolder {
private final static MainFrame INSTANCE = new MainFrame();
}

/**
* Returns MainFrame as singleton.
*
* @return MainFrame as singleton
*/
public static MainFrame getInstance() {
return MainFrameHolder.INSTANCE;
}
}

但是,从 Android 平台的角度来看,我不再确定这样做是否正确/安全,因为我无法直接控制 MainActivity 的创建。 . MainActivity我要的是

  • 启动模式将为 standard .
  • 唯一一次,当 MainActivity 的实例时将在用户点击应用程序图标时创建。意思是,唯一的启动方式是在 AndroidManifest.xml 的 <application> 中指定的。标签。 MainActivity.apk 中不应有任何其他 Java 代码, 发射 MainActivity本身。

public class MainActivity extends Activity {
public static MainActivity INSTANCE = null;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
assert(INSTANCE == null);
INSTANCE = this;
}
}

最佳答案

如果您想要这样做的原因是因为您有一些初始化代码应该只在应用程序首次启动时运行一次,或者为了存储整个应用程序的共享数据,onCreate() Application 的子类的方法可能是一个更好的地方,因为 Android 保证每个应用程序只存在其中一个。参见 this有关如何执行此操作的说明的链接。

关于android - 将 Activity 视为单例对我来说安全吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11179599/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com