안녕하세요 초보 앱 개발자입니다.

 

이번에 디지털 시계 위젯을 개발 중에 있는데 막상 만들고 나니 돌아가긴 돌아가는데

중간에 메모리 과부하가 걸려서 그런건지 아니면 다른 이유에서인지 갑자기 중간에 시계가 멈추는 현상이 발생합니다.

이런 경우 어떻게 해결해야 할지 알려주실수 있으실런지요?

예시코드 하기에 작성했습니다.

답변주시면 감사하겠습니다.

 

================================================================================================

 

public class DigitalClock extends AppWidgetProvider {

 @Override
 public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
  // TODO Auto-generated method stub
  Timer timer = new Timer();
  timer.scheduleAtFixedRate(new MyTime(context, appWidgetManager), 0, 1000);
 }
 
 class MyTime extends TimerTask{
  RemoteViews remoteviews;
  AppWidgetManager appwidgetmanager;
  ComponentName componentname;

  public MyTime(Context context, AppWidgetManager appWidgetManager) {
   // TODO Auto-generated constructor stub
   appwidgetmanager = appWidgetManager;
   remoteviews = new RemoteViews(context.getPackageName(),R.layout.main);
   componentname = new ComponentName(context, DigitalClock.class);
  }
  
  @Override
  public void run() {
   // TODO Auto-generated method stub
  Date date;
  date = new Date(System.currentTimeMillis());
  int hour = date.getHours();
  int minute = date.getMinutes();
  int second = date.getSeconds();
  
  //hour
  switch(hour){
  case 0 :
   remoteviews.setImageViewResource(R.id.hour_1, R.drawable.num_0);
   remoteviews.setImageViewResource(R.id.hour_2, R.drawable.num_0);
   break;
   
  case 1 :
   remoteviews.setImageViewResource(R.id.hour_1, R.drawable.num_0);
   remoteviews.setImageViewResource(R.id.hour_2, R.drawable.num_1);
   break;
   
  case 2 :
   remoteviews.setImageViewResource(R.id.hour_1, R.drawable.num_0);
   remoteviews.setImageViewResource(R.id.hour_2, R.drawable.num_2);
   break;

 

(이런 식으로 24시간 표현,  분도 0~59까지 같은 방식(switch문)으로 표현)

.

.

.

appwidgetmanager.updateAppWidget(componentname, remoteviews);
  }  
 }   
}

=================================================================================

 

layout의 경우, 코드에서 유추할 수 있듯이, hour와 minute 에 대한

Imageview를 각각 2개씩 만들어 horizontal로 나열했습니다.

 

나머지는 앱위젯 개발환경에 맞게 setting 했습니다.