0
서비스 내에서 내 AppWidget을 업데이트하는 데 문제가 있습니다. 문제는 나에게 전혀 비논리적 인 것처럼 보입니다. 따라서 TestService를 통해 실수를 찾아냅니다. 가 여기 내 testlayout있다가 내가 사용SystemClock.sleep (x)가 AppWidget의 업데이트를 막는 이유는 무엇입니까?
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<TextView android:id="@+id/testText"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Hello World"/>
</LinearLayout>
onStart(Intent, startid)
는 다음과 같이 구현됩니다
@Override
public void onStart(Intent intent, int startId) {
super.onStart(intent, startId);
Log.d(TAG, "onStart Service with StartId: " + startId);
mStartId = startId;
int widgetId = AppWidgetManager.INVALID_APPWIDGET_ID;
if (intent != null && intent.hasExtra(AppWidgetManager.EXTRA_APPWIDGET_ID)){
widgetId = intent.getIntExtra(AppWidgetManager.EXTRA_APPWIDGET_ID,
AppWidgetManager.INVALID_APPWIDGET_ID);
}
if (widgetId == AppWidgetManager.INVALID_APPWIDGET_ID){
Log.d(TAG, "invalif AppWidgetId");
stopSelf();
}
RemoteViews mRemoteViews = new RemoteViews(getPackageName(), R.layout.testlayout);
mRemoteViews.setTextViewText(R.id.testText, "someText");
AppWidgetManager.getInstance(this).updateAppWidget(widgetId, mRemoteViews);
SystemClock.sleep(1000);
mRemoteViews.setTextViewText(R.id.testText, "text after delay");
AppWidgetManager.getInstance(this).updateAppWidget(widgetId, mRemoteViews);
}
을이 구현에서, 결과 위젯은 항상 텍스트가 "someText을"하지만 "텍스트해야 지연 후 "내 관점에서. 해당 줄을 제거하면 SystemClock.sleep(1000)
"지연 후 텍스트"가 나타납니다. 왜 이런거야? (삼성 갤럭시 넥서스 (4.1.1)