В примерах все как всегда просто и понятно, но как оно в реальной жизни?..
Например, камера: htc и стоковое приложение ведут себя по-разному, поэтому сохранять/забирать фото нужно немного более извращенно заботливо:
Делаем фото: public void takePhoto() {
// name consists of Photo + time taken
Time now = new Time();
now.setToNow();
String fileName = "Photo_" + now.toString().substring(0, 13) + ".jpg";
// create parameters for Intent with filename
ContentValues values = new ContentValues();
values.put(MediaStore.Images.Media.TITLE, fileName);
values.put(MediaStore.Images.Media.DESCRIPTION, "Image captured by camera");
// imageUri is the current activity attribute, define and save it
// for later usage (also in onSaveInstanceState)
mPhotoUri = getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
values);
// create new Intent
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, mPhotoUri);
intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 1);
startActivityForResult(intent, PHOTO_REQUEST_CODE);
}
В свою очередь был неприятно удивлен тем, насколько дополнительный подзапрос при выборке всех контактов тормозит весь процесс.
Например, выборка в курсор 300 контактов с подзапросом в отдельный курсор из Data.CONTENT_URI (выборка ника по типу аккаунта) на htc hero заняла секунд 7-10.
Фреймворки под Android (пока что), к сожалению, только запутывают. Особенно если твой код дальше поддерживается другими разработчиками. Т.к. куда проще вести документацию и вставлять комментарии, нежели посылать разработчиков к мануалам фреймворков. Да и сам я куда с больше охотой читаю нативный код, нежели код фреймворков в теле проекта.
Попробовал несколько ActionBar библиотек и пришел к выводу, что таки проще написать свой. Свой кот роднее :)
Согласен, о чудесная, членораздающая машина — доков в основном хватает. По AsyncTask — уж точно, это оказалось довольно плевое дело. Но 99% — это слишком. Кроме багов, в доках хватает еще и недокументированных функций.
Теперь интересно, о каких особенностях нам расскажет автор.
Беда в том, что завтра я буду применять его на работе. Впервые. Если вы поделитесь опытом в виде ссылок на хорошие ресурсы по теории, я вас расцелую! Ну, или плюсану карму — на хабре это ж больше принято? :D
Хех, сервис не завершается (время старта показывается именно то, когда впервые запускается приложение). Тут дело скорее всего в том, что я в приложении неправильно разруливал жизненные цикли из-за табов.
Нет, отключение дисплея никак не влияет на сервис, при чем тут это?
Я до конца не понял свою проблему. Если приложение долго не вызывалось, а вместо него работали другие, то сервис перезагружается. Если принудительно закрыть Activity, работающее с сервисом, и перезапустить приложение, то все ОК.
Сервис для таймера это:
— лишние строчки кода, написание AIDL интерфейса;
— лишняя память, которая выделяется под сервис;
— не всегда работает, т.к. ОС может убить даже сервис.
Нужен топик-ответ, который четко разъяснит:
— что требует украинское законодательство в плане использования ПО юр. лицом;
— как применить эти требования к ПО с GPL и им подобным лицензиям.
Возможно, это уже было в миллионе комментариев сверху и гугль знает, но было бы очень приятно, чтобы поставить тчк. в этом вопросе.
И еще: на секундочку, давайте посмотрим на эти истории о дядьках, которые приходят проверять подлинность ПО. Все они сводятся к
«Я знаю, что по закону бумажки мне не нужны, но они помогают дешевле заключить дружбу с проверяющим.»
Отлично! Как после таких слов можно надеяться на жизнь в правовом государстве? Подмазать, а не отстоять свои права. Потакать хамству и беззаконию. Старая такая история, правда? Да, я не веду бизнес и мне не нужно содержать семью, но подобные вещи уважения не вызывают. И эта услуга от UALinux симптомы общей болезни, проблема же в другом.
Одно правильно: мы имеем ту власть, на которую заслуживаем.
Например, камера: htc и стоковое приложение ведут себя по-разному, поэтому сохранять/забирать фото нужно немного более
извращеннозаботливо:Делаем фото:
public void takePhoto() {
// name consists of Photo + time taken
Time now = new Time();
now.setToNow();
String fileName = "Photo_" + now.toString().substring(0, 13) + ".jpg";
// create parameters for Intent with filename
ContentValues values = new ContentValues();
values.put(MediaStore.Images.Media.TITLE, fileName);
values.put(MediaStore.Images.Media.DESCRIPTION, "Image captured by camera");
// imageUri is the current activity attribute, define and save it
// for later usage (also in onSaveInstanceState)
mPhotoUri = getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
values);
// create new Intent
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, mPhotoUri);
intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 1);
startActivityForResult(intent, PHOTO_REQUEST_CODE);
}
Забираем:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
case PHOTO_REQUEST_CODE:
if (resultCode == Activity.RESULT_OK) {
Bitmap bitmap = null;
if (data != null)
bitmap = (Bitmap) data.getExtras().get("data");
else
try {
bitmap = android.provider.MediaStore.Images.Media.getBitmap(
getContentResolver(), mPhotoUri);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
break;
default:
break;
}
}
Например, выборка в курсор 300 контактов с подзапросом в отдельный курсор из Data.CONTENT_URI (выборка ника по типу аккаунта) на htc hero заняла секунд 7-10.
Может, я чего-то не понимаю? 0_о
Попробовал несколько ActionBar библиотек и пришел к выводу, что таки проще написать свой. Свой кот роднее :)
Теперь интересно, о каких особенностях нам расскажет автор.
Заранее спасибо.
Я до конца не понял свою проблему. Если приложение долго не вызывалось, а вместо него работали другие, то сервис перезагружается. Если принудительно закрыть Activity, работающее с сервисом, и перезапустить приложение, то все ОК.
Просто не заметил среди других комментариев. Поэтому отдельный пост может был бы и полезен.
— лишние строчки кода, написание AIDL интерфейса;
— лишняя память, которая выделяется под сервис;
— не всегда работает, т.к. ОС может убить даже сервис.
Из личного мерзкого опыта :)
— что требует украинское законодательство в плане использования ПО юр. лицом;
— как применить эти требования к ПО с GPL и им подобным лицензиям.
Возможно, это уже было в миллионе комментариев сверху и гугль знает, но было бы очень приятно, чтобы поставить тчк. в этом вопросе.
И еще: на секундочку, давайте посмотрим на эти истории о дядьках, которые приходят проверять подлинность ПО. Все они сводятся к
«Я знаю, что по закону бумажки мне не нужны, но они помогают дешевле заключить дружбу с проверяющим.»
Отлично! Как после таких слов можно надеяться на жизнь в правовом государстве? Подмазать, а не отстоять свои права. Потакать хамству и беззаконию. Старая такая история, правда? Да, я не веду бизнес и мне не нужно содержать семью, но подобные вещи уважения не вызывают. И эта услуга от UALinux симптомы общей болезни, проблема же в другом.
Одно правильно: мы имеем ту власть, на которую заслуживаем.
Присплять, лукаві, і в огні
Її, окраденую, збудять..."