Я проводил некоторые исследования и до сих пор не уверен на 100%, может ли это привести к утечке памяти.Я использую кнопку просмотра (v.context).Я думаю, что я в порядке, так как контекст не хранится как статический, но я хотел бы получить некоторую обратную связь, если это возможно.Основная проблема, которую я вижу, связана с OSMonitor ... значение (M) идет вверх и вверх и вверх.С каждым открытием / закрытием виджета и поворотом экрана.
32M 43M 61M 77M и т. Д ...
Я не уверен, является ли (M) мегабайтами или мегабитами.Если это основано на стеке, я предполагаю мегабиты perhpas, так как большинство высокопроизводительных устройств ограничено 32/48 МБ в стеке (или что-то).
Спасибо за отзыв / дополнительные глаза!
Это приложение Banner на Маркете, кстати ...
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;
}