0

私のアプリでは、appWidget を更新するインテントを送信しています。問題は、logcat から、インテントの受信に平均で 10 秒かかっていることがわかります。

 05-16 18:12:54.070: DEBUG/PHCA_Variable(7580): Broadcast sent  
 05-16 18:12:54.080: INFO/ActivityManager(274): Starting: Intent { flg=0x10000000 cmp=com.skipmorrow.phca/.WidgetDialogResponseActivity (has extras) } from pid 7580    
 05-16 18:12:54.100: WARN/ActivityManager(274): Trying to launch com.skipmorrow.phca/.WidgetDialogResponseActivity  
 05-16 18:12:54.170: DEBUG/InputTransport(274): Input channel constructed: name='40832a98 com.skipmorrow.phca/com.skipmorrow.phca.WidgetDialogResponseActivity (server)', ashmemFd=299, receivePipeFd=311, sendPipeFd=310   
 05-16 18:12:54.170: DEBUG/InputTransport(274): Input channel constructed: name='40832a98 com.skipmorrow.phca/com.skipmorrow.phca.WidgetDialogResponseActivity (client)', ashmemFd=304, receivePipeFd=309, sendPipeFd=313   
 05-16 18:12:54.170: DEBUG/InputTransport(274): Input channel destroyed: name='40832a98 com.skipmorrow.phca/com.skipmorrow.phca.WidgetDialogResponseActivity (client)', ashmemFd=304, receivePipeFd=309, sendPipeFd=313 
 05-16 18:12:54.180: DEBUG/InputTransport(7580): Input channel constructed: name='40832a98 com.skipmorrow.phca/com.skipmorrow.phca.WidgetDialogResponseActivity (client)', ashmemFd=66, receivePipeFd=67, sendPipeFd=68 
 05-16 18:12:54.460: INFO/ActivityManager(274): Displayed com.skipmorrow.phca/.WidgetDialogResponseActivity: +362ms 
 05-16 18:12:56.140: INFO/InputDispatcher(274): Delivering key to current input target: action: 0, channel '40832a98 com.skipmorrow.phca/com.skipmorrow.phca.WidgetDialogResponseActivity (server)' 
 05-16 18:12:56.260: INFO/InputDispatcher(274): Delivering key to current input target: action: 1, channel '40832a98 com.skipmorrow.phca/com.skipmorrow.phca.WidgetDialogResponseActivity (server)' 
 05-16 18:12:56.390: DEBUG/InputTransport(7580): Input channel destroyed: name='40832a98 com.skipmorrow.phca/com.skipmorrow.phca.WidgetDialogResponseActivity (client)', ashmemFd=66, receivePipeFd=67, sendPipeFd=68   
 05-16 18:13:03.350: DEBUG/PHCA_PhcaAppWidgetProvider(7580): onReceive(); action = android.appwidget.action.APPWIDGET_UPDATE    

少し怪しいと思うのは、アクティビティが開始されているという警告だけです。なぜそれが警告になるのですか?それ以外は、すべて問題ないようです。

インテントを送信するコードは特別なものではありません。

    Log.d(MY_DEBUG_TAG, "UpdateAppWidgets()");
    Intent i = new Intent();
    i.setAction(AppWidgetManager.ACTION_APPWIDGET_UPDATE);
    ComponentName phcaWidget = new ComponentName(ctx, PhcaAppWidgetProvider.class);
    i.putExtra("appWidgetIds", AppWidgetManager.getInstance(ctx).getAppWidgetIds(phcaWidget));

    ctx.sendBroadcast(i);
    Log.d(MY_DEBUG_TAG, "Broadcast sent");

また、appWidgetProvider の onReceive も特別なものではありません。Log ステートメントは最初のコマンドです。

インテントの受信に 10 秒以上かかる原因は何ですか?

スキップ

4

1 に答える 1

0

インテントを送信するアクティビティがまだ存在しない場合は、開始する必要があります。10秒はアプリを起動するのに長い時間のように思えますが、狂気ではありません。

デバッグモードで実行速度が5倍以上遅いアプリがあります。デバッグモードの場合は、デバッグモードでない場合でも、実行速度が大幅に向上する可能性があります。一般に、Eclipse IDEを実行しているPCに接続されているデバイスの場合、デバッグモードでないときにlogcatメッセージが表示されます。それを機能させることができる場合は、そのように実行してみて、より高速かどうかを確認する必要があります。また、Eclipseから完全にプラグを抜いた状態で実行してみてください。高速かどうかを判断するのは難しくなりますが、高速になる可能性があります。

于 2012-05-17T01:23:25.157 に答える