该应用程序的相关部分是IntentService
( DatabaseService
) 和AppWidgetProvider
( LotWidget
)。在LotWidget
中,当按下按钮时,PendingIntent
会触发 a 向自身发送广播,并在 中接收onReceive()
。到目前为止,所有这些工作都很好。在中,我从以及各种附加onReceive
内容中读取了动作,然后启动 this或启动 main 。启动活动工作正常,但由于某种原因我无法理解,没有开始。我知道导致意图的代码是通过使用.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
从 main开始Activity
工作正常。我的清单将其定义DatabaseService
为Service
:
<service android:name="com.bsprague.thelot.DatabaseService" >
</service>
我知道 theService
没有被启动,因为 aLog
的开头没有被显示,尽管当它从 main 发送onHandleIntent
时它显示得很好。Android 中是否有一些我遗漏的东西使它无法从 a开始?Intent
Activity
Service
BroadcastReceiver