반응형
안녕하세요 돼지왕 왕돼지입니다.
오늘은 Service 를 이용한 App Widget Update 방법에 대해 알아 보겠습니다.
왜 Service 를 이용하나요?
- 기본적으로 Provider 내에서의 작업 수행은 10초 이내로 끝나야 합니다.
간혹가다가 위젯 update 를 위해서 많은 계산을 필요로 하던가, DB 에서 정보를 얻어오는 등의 긴 작업을 요하는 경우가 있는데요.
이런 경우에는 widget update 중 ANR 을 초래할 수 있기 때문에, Service 를 이용하는 것이 좋습니다.
- 두번 째 이유는, android app widget 의 경우 30분 이내의 updatePeriodMillis 를 보장하지 않습니다.
따라서 30분 이내에 지속적인 Update 가 필요할 경우에는 Service 를 이용하면 좋습니다.
- 물론 단점도 있긴 합니다. 단점은 Java 의 Timer 를 사용하는 방법보다 Battery 를 많이 먹는다고 하는데,
제 생각에는 돗진갯진일지 싶습니다.
2012/02/16 - [프로그래밍 놀이터/안드로이드] - [Android/안드로이드] Timer 를 이용한 App Widget Update Example
Sample Code
물론 여기서 제공하는 방법은 지속적인 업그레이드는 아닙니다만, 어떤식으로 appwidget 을 update 할껀지에 대한 idea 를 보여주죠.
@AppWidgetProvider
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds){
Intent intent = new Intent(context, UpdateService.class);
context.startService(intent);
}
@Service
public class UpdateService extends Service{
@Override
public void onStart(Intent intent, int startId){
RemoteViews updateViews = new RemoteViews(this.getPackageName(), R.layout.main);
updateViews.setTextViewText(R.id.textview, (new Date(System.currentTimeMillis())).toLocaleString());
ComponentName componentname = new ComponentName(this, TestWidget.class);
AppWidgetManager appwidgetmanager = AppWidgetManager.getInstance(this);
appwidgetmanager.updateAppWidget(componentname, updateViews);
}
@Override
public IBinder onBind(Intent arg0) {
return null;
}
}
@Manifest
<service android:name=".UpdateService">
<intent-filter>
<action android:name="com.test.updateservice"/>
</intent-filter>
</service>
- Service를 이용한다는 점만 달라졌지, remoteview 를 이용해서 UI에 접근하고,
appwidgetmanager를 통해서 update 소식을 알리고 하는 등의 기초적 방법은 같습니다.
appwidgetmanager를 통해서 update 소식을 알리고 하는 등의 기초적 방법은 같습니다.
로그인 없이 추천 가능합니다. 손가락 꾸욱~
반응형
'프로그래밍 놀이터 > 안드로이드, Java' 카테고리의 다른 글
[Android/안드로이드] App Widget 제작시 updatePeriodMillis 의 오작동 or 사기. (0) | 2012.02.16 |
---|---|
[Android/안드로이드] Timer 를 이용한 App Widget Update Example (15) | 2012.02.16 |
[Android/안드로이드] AppWidget Sample Code ( Example ). (0) | 2012.02.15 |
[Android/안드로이드] Service 생명주기. (8) | 2012.02.15 |
[Android/안드로이드] Traceview 에 대해 알아보자. ( Profilinig ) (0) | 2012.02.15 |
댓글