시계 앱위젯 개발 중인데요. 시간을 Calendar로 받아서 비트맵으로 변환해서 보여주는 앱위젯입니다. 그런데 이게 잘 작동하다가 한 30분쯤 지나면 멈춰버리네요. 메모리 문제인거 같은데, 아무튼 다음 코드는 문제가 있는 것으로 짐작되는 Broadcastreceiver 부분입니다. 고수님들의 조언을 부탁드립니다. 


BroadcastReceiver mTime = new BroadcastReceiver() {

@Override

public void onReceive(Context context, Intent intent) {

String action = intent.getAction();

if(action.equals(Intent.ACTION_TIME_TICK)){

updateTime(); // 따로 함수정의를 하여 시간을 구하는 함수입니다.

RemoteViews views = new RemoteViews(context.getPackageName(),R.layout.hclockwidget_layout);

//(int)((74*(float)widgetWidth-2)*deviceDensity/160), (int)((100*(float)widgetHeight-2)*deviceDensity/160)

//다음에 비트맵과 캔버스를 새로 생성하는데 제 생각엔 여기서 문제가 일어나는 것 같아요.

Bitmap bitmap = Bitmap.createBitmap(100*widgetWidth,100*widgetHeight, Bitmap.Config.ARGB_8888);

Canvas canvas = new Canvas(bitmap);

canvas.drawARGB(backgroundA, backgroundR, backgroundG, backgroundB);

drawData(canvas, drawingOrder); // 따로 정의한 함수입니다. 내부적으로 canvas.drawtext함수를 사용합니다.  

views.setImageViewBitmap(R.id.imgview, bitmap);


AppWidgetManager wm = AppWidgetManager.getInstance(hGetTime.this);

ComponentName widget;

//다음 switch 구문은 앱위젯 크기에 따라 componentName을 지정해주는 부분입니다.

switch((widgetHeight*10)+widgetWidth){

case 11 :

widget = new ComponentName(context,hClockWidget11.class);

break;

case 12 :

widget = new ComponentName(context,hClockWidget12.class);

break;

case 13 :

widget = new ComponentName(context,hClockWidget13.class);

break;

case 14 :

widget = new ComponentName(context,hClockWidget14.class);

break;

case 21 :

widget = new ComponentName(context,hClockWidget21.class);

break;

case 22 :

widget = new ComponentName(context,hClockWidget22.class);

break;

case 23 :

widget = new ComponentName(context,hClockWidget23.class);

break;

case 24 :

widget = new ComponentName(context,hClockWidget24.class);

break;

case 31 :

widget = new ComponentName(context,hClockWidget31.class);

break;

case 32 :

widget = new ComponentName(context,hClockWidget32.class);

break;

case 33 :

widget = new ComponentName(context,hClockWidget33.class);

break;

case 34 :

widget = new ComponentName(context,hClockWidget34.class);

break;

case 41 :

widget = new ComponentName(context,hClockWidget41.class);

break;

case 42 :

widget = new ComponentName(context,hClockWidget42.class);

break;

case 43 :

widget = new ComponentName(context,hClockWidget43.class);

break;

case 44 :

widget = new ComponentName(context,hClockWidget44.class);

break;

default :

widget = new ComponentName(context,hClockWidget11.class);

}

wm.updateAppWidget(widget, views);

}

}

};


전공이 아닌 야매 개발자라 안드로이드가 어떻게 돌아가는지 잘 모르겠네요. 부탁드립니다. (__)