Нужно ли вручную добавлять этот метод "onStartCommand", чтобы он содержал мой сервисный код?
blockquote>Да.
может кто-нибудь перепроверить мой приведенный ниже код CountdownTimer?
blockquote>Создавать сервис только тогда, когда он абсолютно необходим. Неясно, почему эта услуга необходима.
Кроме того:
Используйте
stopSelf()
, а неstopService()
, чтобы остановить службу внутри этой службы.Изучение
Intent
дополнений и с использованиемSTART_STICKY
не является хорошей комбинацией.START_STICKY
говорит: «Если вы прервете мой процесс, чтобы освободить системную память, пожалуйста, перезапустите мою службу, когда это возможно, но передайтеnull
дляIntent
». Это приведет к сбою вашего сервиса сNullPointerException
.
Как насчет select
?
select [(a * b) for a in 1x100 for b in 4x10 where (all [odd? a odd? b])]
Поскольку понимания списка могут считаться аналогичными карте, Вы могли бы думать о вызове ее что-то как "listmap". Поочередно, потому что понимания списка основаны на нотации разработчика набора, Вы могли назвать ее чем-то вроде "сборки" или "buildlist".
(Правовая оговорка: Я знаю очень мало о REBOL, поэтому простите мне, если эти имена уже взяты),
do
могло быть соответствующим, поскольку понимания списка являются всего одним экземпляром пониманий Монады, и do
ключевое слово, используемое в Haskell для Одноместных вычислений в сахаре, но я подозреваю, что это слишком неопределенно для пользовательской библиотеки. Я вызвал свою функцию понимания списка comp
, но это - просто сокращение того, что Вы уже имеете. Возможно, yielding
? Например. yielding [(a * b) for a in 1x100 for b in 4x10 where (all [odd? a odd? b])]
. Просто вид косоглазия и притворяется [], не там.