具有弱引用和singleton的Android应用程序



我正在完全重新设计我的Android应用程序。以前,所有的东西都在同一个班级。因此,我尝试重新绘制所有内容,以便代码更清楚地分开Admob,而不是放在主线程中的doc建议,我在类中分离代码的不同部分。所以我使用了两种技术:我创建了一个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,我在方法参数中放置了作为主线程的主类

包含我想要永久访问的所有变量的singleton如下所示:

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的au东西:(我的主要课程叫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);

}

}

目前,我还没有注意到任何问题,除了旧的安卓手机4.4.2上的一些速度慢。此外,与我的旧代码相比,EVERYTHING都在同一个类中,更改代码片段要容易得多(转到inapp计费V3更简单,因为所有东西都在一个我称之为弱引用的类中(

我的问题是:-这样的结构可能会带来什么问题?我也选择了这种结构,不加载或在记忆中留下无用的东西-安卓系统如何从内存中抹去一个被称为弱参考的正在进行的动作?-正如您所看到的,我将activityhas参数传递给方法,有时我会将其从一个方法传递给另一个方法。这个事实会引起一些麻烦吗?

谢谢你的帮助。

Check Dagger2比classic singleton更好https://developer.android.com/training/dependency-injection/dagger-android?hl=es-419

感谢您的回答和提示。我要去看看。

其他人知道使用弱引用对记忆的影响吗?

相关内容

最新更新