updatePeriodMillis에 시간만큼 업데이트되지만...
액티비티에서 수정한 내용을 바로 위젯에서 적용시키고 싶을 때, onReceive를 이용하면 된다
// 액티비티 이벤트 Intent widgetIntent = new Intent(this, SmartIdWidget.class); widgetIntent.setAction(AppWidgetManager.ACTION_APPWIDGET_UPDATE); // 위젯 업데이트 액션 this.sendBroadcast(widgetIntent); // 브로드캐스팅widget
private RemoteViews views; // 위젯 업데이트 메소드 public static void pushWidgetUpdate(Context context, RemoteViews remoteViews) { ComponentName myWidget = new ComponentName(context, AppWidgetProvider.class); AppWidgetManager manager = AppWidgetManager.getInstance(context); if(!TextUtils.isEmpty(SharedUtil.getString(context, "kor"))){ remoteViews.setTextViewText(R.id.tv_kor_name, SharedUtil.getString(context, "kor")); } if(!TextUtils.isEmpty(SharedUtil.getString(context, "eng"))){ remoteViews.setTextViewText(R.id.tv_eng_name, SharedUtil.getString(context, "eng")); } remoteViews.setOnClickPendingIntent(R.id.btn_go_to_work, workStateClick(context, "1")); remoteViews.setOnClickPendingIntent(R.id.btn_get_off_work, workStateClick(context, "2")); manager.updateAppWidget(myWidget, remoteViews); } @Override public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { views = new RemoteViews(context.getPackageName(), R.layout.smart_id_widget); pushWidgetUpdate(context, views); } @Override public void onReceive(Context context, Intent intent) { AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context); ComponentName myWidget = new ComponentName(context.getPackageName(), SmartIdWidget.class.getName()); int[] widgetIds = appWidgetManager.getAppWidgetIds(myWidget); String action = intent.getAction(); //업데이트 액션이 들어오면 if(action.equals(AppWidgetManager.ACTION_APPWIDGET_UPDATE)){ if(widgetIds != null && widgetIds.length > 0){ this.onUpdate(context, AppWidgetManager.getInstance(context), widgetIds); // onUpdate 호출 } } }
'Before 2022 > Android' 카테고리의 다른 글
라이프 사이클 개념도 (0) | 2018.12.04 |
---|---|
Flag Activity(Intent Flag 정리) (0) | 2018.09.02 |
위젯에서 glide 사용하기 (0) | 2018.08.29 |
안드로이드 Spinner onItemSelected 반복 호출 문제 (0) | 2018.08.28 |
안드로이드 갤러리에서 이미지 선택 후 보여주는 방법(Glide) (0) | 2018.08.28 |