Я пробовал ВСЕ. Провел дни экспериментов. Я не хотел блокировать вращение активности. Мой сценарий был:
Проблема заключалась в том, что при повороте экрана каждое решение в книге не удавалось. Даже с классом AsyncTask, который является правильным способом Android для решения этих ситуаций. При повороте экрана текущий контекст, с которым работает начальный поток, исчезает, и это портится в отображаемом диалоговом окне. Проблема всегда была в диалоге, независимо от того, сколько трюков я добавил в код (передача нового контекста запущенным потокам, сохранение состояний потоков посредством вращений и т. Д.). Сложность кода в конце всегда была огромной, и всегда было что-то, что могло пойти не так.
Единственное решение, которое сработало для меня, это трюк «Активность / Диалог». Это просто и гениально, и все это доказательство вращения:
Вместо того, чтобы создавать диалог и просить показать его, создайте действие, которое было установлено в манифесте с android: theme = "@ Android: стиль / Theme.Dialog». Так что это просто похоже на диалог.
Замените showDialog (DIALOG_ID) на startActivityForResult (yourActivityDialog, yourCode);
Используйте onActivityResult в вызывающем Activity для получения результатов из выполняющегося потока (даже ошибок) и обновите пользовательский интерфейс.
В «ActivityDialog» используйте потоки или AsyncTask для выполнения длинных задач и onRetainNonConfigurationInstance для сохранения «диалогового» состояния при повороте экрана.
Это быстро и отлично работает. Я все еще использую диалоги для других задач и AsyncTask для чего-то, что не требует постоянного диалога на экране. Но в этом сценарии я всегда использую шаблон «Активность / Диалог».
И я не пробовал, но даже можно заблокировать вращение Activity / Dialog во время работы потока, ускоряя процесс, одновременно позволяя вызывающему Activity вращаться.
в блоке "только для разработки" в вашем urls.py вам необходимо изменить
(r'^media/(?P<path>.*)$', 'django.views.static.serve',
{'document_root': '/media'}),
на ...
(r'^media/(?P<path>.*)$', 'django.views.static.serve',
{'document_root': settings.MEDIA_ROOT}),
ADMIN_MEDIA_PREFIX
по умолчанию установлен на \ media \
и, вероятно, «крадет» путь. Измените этот параметр или используйте другой для носителей без прав администратора - например, site_media
или assets
.
У меня была аналогичная проблема, когда я пытался заставить работать jQuery. Мое исправление заключалось в том, чтобы добавить к моему файлу Apache httpd.conf псевдоним, указывающий на папку, содержащую .js. Вы можете сделать то же самое с папкой CSS.
На сервере разработки мне нравится обманывать и помещать следующее в свой urls.py
if settings.DEBUG:
urlpatterns += patterns('',
(r'^includes/(?P<path>.*)$', 'django.views.static.serve', {'document_root': '/path/to/static/files'}),
)
Таким образом, все в проекте в папке "/ includes" является сервером сервера разработки. . Вы можете просто изменить это на "/media".
"У меня тоже сработало, спасибо, ребята !!
settings.py
MEDIA_ROOT = '/home/pi/ewspaces/ws-classic/xima/media'
MEDIA_URL = '/statics/'
urls.py
if settings.DEBUG:
urlpatterns += patterns('',
(r'^statics/(?P<path>.*)$', 'django.views.static.serve',
{'document_root': settings.MEDIA_ROOT}),
)
внутри шаблонов:
<link type="text/css" href="/statics/css/base/jquery.ui.all.css" rel="stylesheet" />