2011-09-01 3 views
0

어리석은 짓을하고 있을지 모르지만 내 앱 위젯에 흥미로운 문제가 있습니다. 때때로, 홈 화면에 추가 된 후에 다른 앱에서 위젯으로 변환됩니다. 이 위젯은 특정 휴대 전화에서 항상 동일하지만 휴대 전화마다 다릅니다. 몇 초 후, 위젯은 다시 보일 것입니다. 나에게 이것은 일시적인 문제 일 뿐이지 만 위젯이 영구적으로 다른 형태로 붙어 있다고 말하는 사용자의 이메일이 있습니다.위젯이 다른 앱과 다른 위젯이 됨

다음은 관련 수있는 파일입니다

너무 많이 붙어서 유감이지만 어디서부터 시작해야할지 모르겠다. 나는 api에 더 익숙한 누군가에게 문제가 즉각 명백해지기를 바라고있다. 나는 이것이 처음으로 진지한 프로젝트이기 때문에 어떤 불쌍한 코드에 대해서도 사과하며 학업과 함께 취미로 일합니다.

+1

AndroidManifest.xml을 포함하면 어떨까요? 내 첫 번째 혐의는 패키지 이름이나 의도 등록 또는 뭔가 잘못 될 것입니다. – fluffy

+0

추가 : 재고, 일부 공급 업체 ROM 또는 사용자 정의 ROM? –

+0

그리고 주식에 의하여 나는 바닐라 안드로이드를 의미한다. 바보 야. –

답변

2

당신이 설명하고 해결책을 찾기 위해 많이 찾았으며 찾을 수없는 것과 똑같은 문제가 내 위젯에있었습니다. 내가 한 일은 내 경우에 잘 작동하는 것 같은 일종의 해결 방법이다. 내가 한 일은 위젯을 onUpdate() 메서드에서 직접 업데이트하는 대신 다음과 같이 업데이트를 처리 한 서비스를 시작한 다음 그 자체를 종료했습니다. 이것은 에뮬레이터와 업데이트 도중 위젯이 붙어있는 장치에서 해결되었습니다.

의 AppWidgetProvider : 다음은 샘플 코드입니다

@Override 
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { 
    context.startService(new Intent(context, WidgetService.class)); 
} 

본 서비스 :이 해결 방법이 문제를 해결하지만, 좋은 일이 희망이 작업을 수행하는 것이 왜 있는지

@Override 
public void onStart(Intent intent, int startId) { 
    started(intent); 
} 

@Override 
public int onStartCommand(Intent intent, int flags, int startId) { 
    started(intent); 
    return START_STICKY; 
} 


private void started(Intent intent) { 
    //update here the widgets 
    Context context = getApplicationContext(); 
    updateWidgets(context); 
    stopSelf();//killing the service 
} 

private void updateWidgets(Context context) { 
    AppWidgetManager appmanager = AppWidgetManager.getInstance(context); 
    ComponentName cmpName = new ComponentName(context, widgetClass); 
    int[] widgetIds = appmanager.getAppWidgetIds(cmpName); 
    RemoteViews rView = new RemoteViews(context.getPackageName(), layoutId); 
    for (int wid : widgetIds) { 
     //all updates here 
     rView.setTextViewText(tvId, desc); 
     appmanager.updateAppWidget(wid, rView); 
    } 
} 

주 도와 드리겠습니다.

관련 문제