저는 Android 응용 프로그램을 추적하는 주식 시장이 있으며 가격을 표시하는 AppWidget이 제공됩니다. 일반적으로 부팅 후 첫 번째로드에 문제가있는 것처럼 보이지만 제대로 작동합니다.부팅시 AppWidget 문제 (초기화 도중 응용 프로그램이 다시 시작됨)
는 부하 시퀀스는 다음과 같이 작동하도록되어 :
- 전화 부츠
- 라는 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);
데이터를 새로 고침 :
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);
, 새로운 데이터를 그릴의 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)