반응형
안녕하세요 돼지왕 왕돼지입니다.
오늘은 Timer 를 이용하여 App Widget 을 Update 하는 방법에 대해 알아보겠습니다.
이 방법은 지난번에 알아본 Service 를 이용한 방법도 매우 유사합니다.
2012/02/16 - [프로그래밍 놀이터/안드로이드] - [Android/안드로이드] Service 를 이용한 App Widget Update
- Service 를 이용하는 이유와 같습니다. 위의 링크를 참조하세요~ :)
- 기본적으로 Timer 는 Timer 자체의 Thread 를 이용한다는 것을 참조하시면, 코딩하는 데 더 수월하겠습니다.
Service 를 이용한 방법과 마찬가지로, Idea 만을 제공하고 있습니다.
@AppWidgetProvider
왜 Timer 를 이용하여 update 하나요?
- Service 를 이용하는 이유와 같습니다. 위의 링크를 참조하세요~ :)
- 기본적으로 Timer 는 Timer 자체의 Thread 를 이용한다는 것을 참조하시면, 코딩하는 데 더 수월하겠습니다.
Sample Code
Service 를 이용한 방법과 마찬가지로, Idea 만을 제공하고 있습니다.
@AppWidgetProvider
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds){
Timer timer = new Timer();
timer.scheduleAtFixedRate(new MyTime(context, appWidgetManager), 5000, 1000);
}
class MyTime extends TimerTask{
RemoteViews remoteviews;
AppWidgetManager appwidgetmanager;
ComponentName componentname;
MyTime(Context context, AppWidgetManager appWidgetManager){
appwidgetmanager = appWidgetManager;
remoteviews = new RemoteViews(context.getPackageName(), R.layout.main);
componentname = new ComponentName(context, TestWidget.class);
}
@Override
public void run() {
remoteviews.setTextViewText( R.id.textview, (new Date(System.currentTimeMillis())).toLocaleString() );
appwidgetmanager.updateAppWidget(componentname, remoteviews);
}
}
- Widget의 view 접속은 RemoteView class 이용합니다.
remoteviews = new RemoteViews(String packageName, int layout);
- Widget의 존재를 알릴 때는 ComponentName을 이용합니다.
componentname = new ComponentName(Context pkg, String class)
- remoteview를 통해서 view를 control 한 후에는 반드시 AppWidgetManager를 통해서 view의 update 소식을 알려야 합니다.
remoteviews.setTextViewText( id, text )
appwidgetmanager.updateAppWidget( componentname, remoteviews );
로그인 없이 추천 가능합니다. 손가락 꾸욱~
반응형
'프로그래밍 놀이터 > 안드로이드, Java' 카테고리의 다른 글
[Android/안드로이드] ImageViewer Sample Code. (0) | 2012.02.16 |
---|---|
[Android/안드로이드] App Widget 제작시 updatePeriodMillis 의 오작동 or 사기. (0) | 2012.02.16 |
[Android/안드로이드] Service 를 이용한 App Widget Update (0) | 2012.02.16 |
[Android/안드로이드] AppWidget Sample Code ( Example ). (0) | 2012.02.15 |
[Android/안드로이드] Service 생명주기. (8) | 2012.02.15 |
댓글