2012-09-07 3 views
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)

답변

0

휴대 전화 (GalaxyNexus)에서 발생하는 버그로 처리 할 수 ​​있음을 확인했습니다. 전화를 다시 시작하면 어떻게 든 해결됩니다. '좋은 옛날'Windows 일, "당신이 그것을 켜고 껐습니다."