我一直在做一些研究,如果這可能會導致內存泄漏 我仍然不是100%確定。我正在使用按鈕視圖(v.context)。我認爲我很好,因爲上下文不是以靜態方式存儲的,但如果可能的話,我想要一些反饋。我看到的主要問題是OSMonitor ...(M)值上升和上升。隨着每個打開/關閉的部件和屏幕旋轉。靜態內存泄漏與上下文
32M 43M 61M 77M 等等
我不知道如果(M)爲兆字節或Megebits。如果這是基於堆棧,我假設Megebits perhpas,因爲大多數高端設備被限制在堆棧上的32/48 MB(或某物)。
感謝您的反饋/額外的眼睛!
這是市場的旗幟應用,順便說一句...
public class Globals {
public static final String PREF_NAME = "BannerPreferences";
public static final int MAX_TEXT_SIZE = 20;
// refresh ALL widgets loaded on the user's screens
// this could be for removing or adding 'pendingIntents or during bootup
public static void refreshAllWidgets(Context context) {
Logger.d("BANNER", "Globals:refreshAllWidgets");
invalidateWidgets(context, BannerWidget.class); // 1x4
invalidateWidgets(context, BannerWidget1x2.class);
invalidateWidgets(context, BannerWidget2x2.class);
}
// there has to be a API way to do this!! Until then, just loop thru all
// widget_provider classes..
private static void invalidateWidgets(Context context, Class<?> cls) {
ComponentName comp = new ComponentName(context, cls);
AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);
int[] appWidgetIds = appWidgetManager.getAppWidgetIds(comp);
for (int i = 0; i < appWidgetIds.length; i++) {
BannerWidgetBase.updateAppWidget(context, appWidgetManager, appWidgetIds[i]);
}
appWidgetIds = null;
}
如果您認爲自己在泄漏內存,請使用DDMS生成堆轉儲並分析Eclipse MAT實用程序中的結果。 – CommonsWare
@CommonsWare我遵循使用它的指南,但有點不知所措。我轉換並打開它使用eclipse,但我無法完全使用數據。方式很多。 – kenyu73