我尝试在我的应用程序中创建一项服务,以便每天下午 2 点更新数据。我想设置一个重复警报,触发服务为我获取数据。这与 UI 线程无关,即使应用程序关闭也应该可以工作。
我似乎无法启动我的服务。
这是我创建警报的活动中的代码
Calendar cal = Calendar.getInstance();
cal.set(Calendar.HOUR_OF_DAY, 20); // HOUR
cal.set(Calendar.MINUTE, 0); // MIN
cal.set(Calendar.SECOND, 0); // SEC
Intent intent = new Intent(Main.this, VenueUpdater.class);
PendingIntent pintent = PendingIntent.getService(Main.this, 0, intent, 0);
AlarmManager alarm = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
alarm.setRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), 30*1000, pintent);
然后我的服务班
public class VenueUpdater extends Service{
@Override
public IBinder onBind(Intent arg0) {
return null;
}
@Override
public void onCreate() {
Toast.makeText(this, "Create", Toast.LENGTH_SHORT).show();
Log.i("SERVICE", "onCreate");
}
@Override
public void onDestroy() {
Toast.makeText(this, "Destroy", Toast.LENGTH_SHORT).show();
Log.i("SERVICE", "onDestroy");
}
@SuppressWarnings("deprecation")
@Override
public void onStart(Intent intent, int startid) {
super.onStart(intent, startid);
Toast.makeText(this, "Start", Toast.LENGTH_SHORT).show();
Log.i("SERVICE", "onStart");
}
}
在我关闭应用程序标签之前的清单中
<service android:enabled="true" android:name="services.VenueUpdater" />
</application>
我检查了其他一些我使用过服务的示例和代码,这些代码似乎很好,但仍然无法正常工作。另外我想知道是否有更好的方法来实现这一点,因为同一个警报可能最终会被创建多次,但可能有一个待定意图标志我可以用来检查它是否没有。