このアプリケーションの問題の部分はIntentService
( DatabaseService
) とAppWidgetProvider
( LotWidget
) です。ではLotWidget
、ボタンが押されると、PendingIntent
それ自体にブロードキャストを送信する が起動され、 で受信されonReceive()
ます。これまでのところ、これはすべて正常に機能しています。では、さまざまなエクストラと同様onReceive
にアクションを読み取り、これを開始するか、メインを開始します。アクティビティの開始は正常に機能しますが、何らかの理由で理解できません。開始されていません。でテストすることで、インテントに至るコードが送信されていることがわかります。Intent
IntentService
Activity
DatabaseService
DatabaseService
Log
onReceive
コードは次のとおりです。
@Override
public void onReceive(Context context, Intent intent) {
super.onReceive(context, intent);
if(intent.getAction().equals(RETURN_DATA_WIDGET) && initialize(context)){
updateWidget(context);
}
else if(intent.getAction().equals(INTERNAL_INC)){
Log.d("WIDG", "Incrememnt");
Intent incr = new Intent(context, DatabaseService.class);
incr.setAction(INCREMENT);
incr.putExtra("incval", intent.getIntExtra("incval", 999));
context.startService(intent);
}
else if(intent.getAction().equals(INTERNAL_UP)){
Log.d("WIDG", "UPDATE");
Intent upd = new Intent(context, DatabaseService.class);
upd.setAction(UPDATE_COUNT);
context.startService(intent);
}
else if(intent.getAction().equals(OPEN_APP)){
Intent open = new Intent(context, TheLotActivity.class);
open.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(open);
}
}
同じインテントを使用してDatabaseService
、メインのActivity
作品から開始すると正常に動作します。私のマニフェストは、次DatabaseService
のService
ように定義します。
<service android:name="com.bsprague.thelot.DatabaseService" >
</service>
の先頭にあるが表示されていないService
ため、 が開始されていないことはわかっていますが、これが main から送信されると正常に表示されます。から起動できないようにする、Androidに欠けているものはありますか?Log
onHandleIntent
Intent
Activity
Service
BroadcastReceiver