【发布时间】:2021-07-19 15:50:34
【问题描述】:
我正在完全重新设计我的 Android 应用。以前,一切都在同一个班级。 因此,我尝试重新绘制所有内容,以便将 Admob 中的代码比放在主线程中的文档建议更清晰,我将代码的不同部分分开在类中。所以我使用了两种技术:我创建了一个包含我想要不断访问的变量的 Songleton,我通过弱引用调用我的类。
这是它的样子: 比如需要更新游戏IU的UIManager类有弱引用如下:
private static SoftReference<UIManager> ManageUI;
static{ManageUI= new SoftReference<>(null);}
static UIManager get()
{
if(ManageUI.get()==null)
{
ManageUI= new SoftReference<>(new UIManager());
}
return ManageUI.get();
}
GameManager Manager=GameManager.getInstance();
例如,为了能够使用 findviewbyid,我将作为主线程的主类放在方法参数中
包含我想要永久访问的所有变量的单例如下所示:
private GameManager()
{}
/** Holder */
private static class Manager
{
/** Instance unique non préinitialisée */
private final static GameManager instance = new GameManager();
}
/** Point d'accès pour l'instance unique du singleton */
public static GameManager getInstance()
{
return Manager.instance;
}
为了将不同类中的所有内容分开,我将参数传递给我的方法,这样我就可以像这样调用属于 Activity 的东西: (我的主类叫GamePlay)
void OpenGlobalScene(GamePlay activity)
{
Manager.OnTitle=false;
if (!checkLayout(activity,R.id.globalscene)) {
LayoutInflater(activity,9, true);
LinearLayout GamePlan = (LinearLayout) activity.findViewById(R.id.globalscene);
GamePlan.setAlpha(Manager.AlphaBord);
}
}
目前,除了旧 android 手机 4.4.2 上的一些缓慢之外,我没有发现任何问题。 此外,与我的旧代码相比,所有内容都在同一个类中,更改代码片段要容易得多(进入 inapp billing V3 更简单,因为所有内容都在一个类中,我称之为弱引用的其他类)
我的问题是: - 这样的结构可能会带来什么问题? 我还选择了那个结构来不加载或留在内存中无用的东西 -Android 会从内存中删除使用弱引用调用的正在进行中的操作的可能性有多大? - 如您所见,我将活动具有参数传递给方法,有时我将它从一个方法传递给另一个。这个事实会引起一些麻烦吗?
感谢您的帮助。
【问题讨论】:
标签: android reference singleton weak