2013-01-10 1 views
1

저는 Android 응용 프로그램을 추적하는 주식 시장이 있으며 가격을 표시하는 AppWidget이 제공됩니다. 일반적으로 부팅 후 첫 번째로드에 문제가있는 것처럼 보이지만 제대로 작동합니다.부팅시 AppWidget 문제 (초기화 도중 응용 프로그램이 다시 시작됨)

는 부하 시퀀스는 다음과 같이 작동하도록되어 :

  1. 전화 부츠
  2. 라는 AppWidget onUpdate을. AppWidget 수신기 인터넷 업데이트 완료, 사용자 정의 Application 클래스 캐시 결과, 화재 sendBroadcast

    Log.d("PortfolioMap", "Widget is requesting a MANUAL_UPDATE"); 
    Intent newIntent = new Intent(context.getPackageName() + ".MANUAL_UPDATE"); 
    context.startService(newIntent); 
    
  3. 데이터를 새로 고침 :

  4. AppWidget은 인터넷에서 데이터를 필요는 인터넷에서 따옴표를 끌어 서비스를 시작합니다. AppWidget 방송 수신

    Log.d("PortfolioMap", "Updating portfolio with results for " + updateData.size() + " stocks with value " + dbgValue); 
    Intent newIntent = new Intent(getPackageName() + ".DATA_UPDATE_COMPLETE"); 
    this.sendBroadcast(newIntent); 
    
  5. , 새로운 데이터를 그릴의 onUpdate 부른다. 실제로 어떻게됩니까

    public void onReceive(Context context, Intent intent) { 
        super.onReceive(context, intent); 
        Log.d("PortfolioMap", "Widget received broadcast " + intent.getAction()); 
        ... 
        this.onUpdate(context, appWidgetManager, ids); 
    } 
    

내 애플리케이션이 다시 시작되는 약 10 초 지연 (의 onCreate가 단계 4 (DATA_UPDATE_COMPLETE이 전송하는 방송) 및 단계 (5) 사이 (DATA_UPDATE_COMPLETE 방송 수신)이다 Application 클래스는 4 단계 후에 두 번째 호출됩니다.

새 PID로 응용 프로그램을 다시 시작한 후에도 응용 프로그램의 첫 번째 인스턴스에서 보낸 브로드 캐스트를 계속 수신하지만이 시점에서 응용 프로그램 데이터는 지워집니다.

누군가 내 응용 프로그램이로드 중간에 재설정되는 이유와 응용 프로그램이 재설정 된 후에도 브로드 캐스트가 수신되는 이유를 알고 있습니까? 이것은 나에게 매우 이상하게 보입니다. 재시동은 모토로라의 방송인 ACTION_WIDGET_ADDED에 따라 곧바로 시작됩니다. 그러나 이것이 의미가 있는지 또는 그 의미인지는 확실하지 않습니다.

내 기록은 여기에 있습니다. PID가 마지막 세 줄에서 어떻게 변하는 지 주목하십시오. 그리고 두 번째로 "응용 프로그램이 생성 중입니다"라고 말합니다.

21:37:55.347: D/PortfolioMap(4299): Application is being created 
21:37:55.467: D/PortfolioMap(4299): Widget received broadcast android.appwidget.action.APPWIDGET_ENABLED 
21:37:55.477: D/PortfolioMap(4299): Widget onUpdate called 
21:37:55.477: D/PortfolioMap(4299): Widget is requesting a MANUAL_UPDATE 
21:37:55.497: D/PortfolioMap(4299): InternetUpdater received broadcast MANUAL_UPDATE 
21:37:55.927: D/PortfolioMap(4299): Updating portfolio with results for 3 stocks with value 8973.326 
21:38:05.337: D/PortfolioMap(4299): Widget received broadcast com.motorola.blur.home.ACTION_WIDGET_ADDED 
21:38:18.417: D/PortfolioMap(4778): Application is being created 
21:38:18.497: D/PortfolioMap(4778): Widget received broadcast com.karwosts.PortfolioMap.DATA_UPDATE_COMPLETE 
21:38:18.497: D/PortfolioMap(4778): Starting widget redraw with portfolio 'All Portfolios' (value:0.0) 

답변

0

주요 장비 제조업체와의 협력에 대한 경험이 있으며 직접 확인했습니다. 시스템 부팅시 OS가 충분한 메모리를 할당받지 못했고 활성 프로세스를 강제 종료하고 OS 초기화를 완료 할 때 해당 프로세스를 재 할당한다고 설명했습니다. 이것은 당신의 관찰을 잘 설명해줍니다.

관련 문제