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);
}
在此實現,由此產生的Widget始終文字: 「SomeText」 則會,但它應該是「文本延遲後「在我的觀點。如果我刪除那條線SystemClock.sleep(1000)
,我會得到「延遲後的文本」。爲什麼是這樣? (已測試)Samsung Galaxy Nexus(4.1.1)