大多数时候,在设计桌面应用程序时,为了方便起见,我喜欢将主应用程序设置为单例。我可以轻松访问应用程序的数据和方法,而无需到处传递主应用程序引用。
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>
标签中指定。内不应该有任何其他 Java 代码MainActivity.apk
来启动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;
}
}