В версиях ОС 8+ Android ограничивает фоновую обработку, если она не является частью службы переднего плана или заданием, инициированным JobScheduler. В результате этого ограничения библиотека маяков Android по умолчанию будет использовать JobScheduler на Android 8+. На переднем плане «немедленный» ScanJob будет постоянно выполняться для сканирования. В фоновом режиме (то есть, когда никакие действия не видны с разблокированным экраном), Android не позволяет этого. Работа может быть запланирована не чаще, чем раз в ~ 15 минут. Вот почему вы видите, что сканирование прекращается.
Неважно, что у вас есть собственный сервис переднего плана. Android по-прежнему применяет эти ограничения для любой фоновой обработки, выполняемой вне этой службы переднего плана.
Две альтернативы:
Жить с ограничениями на работу (сканирование каждые 15 минут). Используйте BackgroundPowerSaver для автоматического переключения между режимом переднего плана / фона и установите beaconManager.setBackgroundScanPeriod(5000)
(для сканирования в течение 5 секунд каждые 15 минут). Для ясности следует также установить beaconManager.setBackgroundBetweenScanPeriod(15*60*1000)
(15 минут), хотя можно установить более низкое значение, которое будет быть запрещенным ОС на Android 8+.
Настройте библиотеку для сканирования с помощью своей собственной службы переднего плана (да, как службы второго переднего плана), как описано здесь . Затем вы можете прекратить использовать свой собственный сервис переднего плана или оставить его. Если вы сохраните его, вы увидите два значка уведомлений о двух запущенных службах переднего плана. можно объединить эти два уведомления , если вы хотите сохранить две службы переднего плана и показать только одно уведомление.
Обновление 2
Выполнен фрагмент кода для создания суперпользователя из тестового примера (подкласс django.test.TestCase
). Все прошло нормально. Также создан и сохранен экземпляр UserProfile
с user = self.adminuser
. Это тоже сработало.
Обновление
Эта строка интересна:
File "/usr/lib/python2.4/site-packages/Django-1.1.1-py2.4.egg/django/contrib/auth/management/__init__.py", line 28, in create_permissions
defaults={'name': name, 'content_type': ctype})
Похоже, что при создании разрешений происходит сбой выполнения.
Оригинальный ответ
Предупреждение: данные усекаются для столбца «имя» в строке 1
Странно. Я попробовал это из оболочки Django, и это сработало для меня. Я использую Postgresql 8.3 и Django 1.2.1 на Ubuntu Jaunty. Можете ли вы дать более подробную информацию о том, какую версию Django / базы данных вы используете?
Также User
не имеет атрибута name
. Можете ли вы дважды проверить, используете ли вы auth.User
?
Нужно ли загружать пользователей-администраторов в качестве приборов?
Вам не нужно делать . Но если вы создаете этого администратора только для целей тестирования, было бы неплохо добавить Fixture. Именно этим я и занимаюсь в своих проектах.
Я бы использовал встроенный create_superuser
и регистрировал пользователя перед тем, как делать какие-либо запросы. Следующее должно работать:
from django.contrib.auth.models import User
from django.test.client import Client
# store the password to login later
password = 'mypassword'
my_admin = User.objects.create_superuser('myuser', 'myemail@test.com', password)
c = Client()
# You'll need to log him in before you can send requests through the client
c.login(username=my_admin.username, password=password)
# tests go here