Как выбрать в терминале из истории, когда-то введенную команду? Если недавно введенная — то стрелочкой вверх, а если команд двадцать назад?
Автор: Viktor
Как выбрать в терминале из истории, когда-то введенную команду? Если недавно введенная — то стрелочкой вверх, а если команд двадцать назад?
Автор: Viktor
Скорее всего вы уже находили множество примеров создания собственной базы данных, которые являются копированием друг-друга и преимущественное большинство которых просто не обновляются. Потому я решил выложить пример использование заранее созданной БД, с простой реализацией обновления данных.
import android.content.Context;
import android.content.SharedPreferences;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.preference.PreferenceManager;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
/**
* Created by AwesomeDevelop on 24.12.2014.
*/
public class ExternalDbOpenHelper extends SQLiteOpenHelper
{
private static final String DATABASE_NAME = "db.sqlite3"; // Название файла с БД
private static final int DATABASE_VERSION = 1; //Версия БД
private static final String SP_KEY_DB_VER = "db_ver";
private final Context mContext;
public ExternalDbOpenHelper(Context context, String DB_NAME) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
mContext = context;
initialize();
}
/**
* Инициализация БД. Создание новой если ранее не существовала.
*/
private void initialize() {
if (databaseExists()) {
SharedPreferences prefs = PreferenceManager
.getDefaultSharedPreferences(mContext);
int dbVersion = prefs.getInt(SP_KEY_DB_VER, 1);
if (DATABASE_VERSION != dbVersion) {
File dbFile = mContext.getDatabasePath(DATABASE_NAME);
if (!dbFile.delete()) {
// Log.w(TAG, "Невозможно обновить БД");
}
}
}
if (!databaseExists()) {
createDatabase();
}
}
/**
* Проверка существования файла БД. Если существует - возвращает true.
* @return
*/
private boolean databaseExists() {
File dbFile = mContext.getDatabasePath(DATABASE_NAME);
return dbFile.exists();
}
/**
* Создание БД, копирование файла из Assets.
*/
private void createDatabase() {
String parentPath = mContext.getDatabasePath(DATABASE_NAME).getParent();
String path = mContext.getDatabasePath(DATABASE_NAME).getPath();
File file = new File(parentPath);
if (!file.exists()) {
if (!file.mkdir()) {
// Log.w(TAG, "Невозможно создать папку БД");
return;
}
}
InputStream is = null;
OutputStream os = null;
try {
is = mContext.getAssets().open(DATABASE_NAME);
os = new FileOutputStream(path);
byte[] buffer = new byte[1024];
int length;
while ((length = is.read(buffer)) > 0) {
os.write(buffer, 0, length);
}
os.flush();
SharedPreferences prefs = PreferenceManager
.getDefaultSharedPreferences(mContext);
SharedPreferences.Editor editor = prefs.edit();
editor .putInt(SP_KEY_DB_VER, DATABASE_VERSION);
editor.commit();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (is != null) {
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (os != null) {
try {
os.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
@Override
public void onCreate(SQLiteDatabase db) {
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion,
int newVersion) {
}
}
ExternalDbOpenHelper dbOpenHelper = new ExternalDbOpenHelper(this, DB_NAME);
SQLiteDatabase database= dbOpenHelper.getWritableDatabase();
Получить данные можно, к примеру, вот так:
data = new ArrayList();
Cursor dataCursor = database.query(
TABLE_NAME,
new String[] { DATA_NAME,DATA_IMAGE},
null, null, null, null,
DATA_NAME);
dataCursor.moveToFirst();
if(!dataCursor.isAfterLast()){
do {
String image =dataCursor.getString(1);
String name = dataCursor.getString(0);
data.add(new BrandData(name,image));
} while (dataCursor.moveToNext());
}
dataCursor.close();
Автор: Taras Neduiev
Не секрет, что устройства под этой операционной системой имеют огромную фрагментацию, существует огромнейшее количество устройств с различными размерами экрана, разрешениями экрана, различной комплектацией и производительности. Поэтому при разработке приложений возникает необходимость тестировать приложение на различных устройства. Естественно у вас не может оказаться под рукой такого количества различных устройств для теста и тогда на спасение приходят эмуляторы. Стандартный эмулятор, который включен в комплект SDK, мягко говоря далек от совершенства, работа с ним, даже в виде одного устройства, вызывает непередаваемо огромное количество эмоций и все они ,к сожалению, негативны. Ожидание запуска в несколько минут (в лучшем случае минут 3-5), ожидание отклика при нажатии любого элемента, заторможенность, все это делают его непригодным для работы.
Далее везде нажимаем “Next” и дожидаемся загрузки файлов для виртуального устройства.
Для корректного взаимодействия эмулятора и в
Уже прошел год с дня, когда мир познакомился с новой IDE от Google – Android Studio, но по сей день она так и не вышла из беты. Но если еще год назад её можно было установить только для того, чтоб полюбоваться гугловскими решениями в дизайне, то сегодня уже можно серьезно задумываться – стоит ли переходить на Android Studio?
Очень долго я не мог бросить родной и привычный Eclipse и полностью отдаться Google-религии. В течении года, по мере выхода новых версий студии, я её устанавливал, кликал по кнопочкам, вертел конструктор интерфейса, но всегда что-то находил, что не устраивало, в особенности ужаснейшие тормоза в работе самого интерфейса, серьезно, в сырых версиях невозможно было слово нацарапать чтоб курсор не замер после каждого символа. Но вот, с версии 0.8., я все же поборол свою любовь к привычному и полностью перешёл на новую IDE. Дабы упростить принятие решения таким же сомневающимся как и я — приведу плюсы и минусы перехода к студии, и начну, пожалуй, с минусов.
Если раньше для меня это была всего-лишь забавная фраза, так как в Eclipse работать с ним не приходится, то сейчас я изредка попиваю чай с ромашкой. Большинство времени все работает хорошо, хотя процессы выполняются неоправданно долго, так как постоянна синхронизация с Gradle значительно замедляет компиляцию проектов, по сравнению с еклипсом. Но вот временами можно попытаться скомпилить проект и …. и пойти гулять, а вернувшись обнаружить, что работа остановилась в там же, где вы её и видели в последний раз, так как процесс просто висит.
Для меня это оказалось самым большим недостатком, потому что при частых подвисаниях окон, тормозах при работе SpellChecker-а — просто начинаешь выходить из себя, ведь собираешься же написать что-то легендарное, а интерфейс просто не дает и слова написать.
Тем, кто ранее работал в IntelliJ IDEA переход будет более безболезненным, добавление библиотек осуществляется так же, компиляция и её настройки тоже на месте, да и практически все остальное. А вот уроженцев еклипса я спешу расстроить… ВСЕ НЕ ТАК! По крайней мере для меня это именно так и показалось. Добавить библиотеку? Правой кнопкой мыши? – Не, не слышал, вписываем градлу dependencies. Хотя есть способ это сделать и через интерфейс, в свойствах проекта, но как-то не атмосферненько, при живом то градле. Весь код красный? Ошибки? Всё — одна сплошная ошибка? А вот и нет, вы просто открыли проект, но не синхронизировали его с Gradle, знаем что в клипсе такого не было, усаживайтесь поудобнее и начинайте хорошенько разбираться с этим самым градлом.
На этом, с счастью, минусы для меня заканчиваются, хотя еще пол года назад их было куда больше и были они намного серьезней, чем потеря время из-за притормаживания и поиска нужных функций.
Самой огромным плюсом является конечно же то, что разработчиком данной IDE является та же корпорация, которая выпускает платформу, под которую будем писать. Это означает более удобную интеграцию всех необходимых функций для новых версий Android. Уже сейчас, находясь в бете, студия получила все плюшки работы с Material Desig-ом , вернее они были добавлены сразу же, при выходе еще сырой версии Android L developers preview. Да и в будущем, кто как не сами создатели, будут делать все, для ускорения создания приложений, которые будут нести им денюжку прямо в их швейцарский карман.
Да, я знаю что существуют версии и других IDE с уже встроенным android SDK , но добавлены они туда не так тесно как в студии. К примеру вам нужно запустить старый проект, с низким API level, который по ненадобности вы просто не качали, половина классов заливаются краской, количество ошибок в проекте неумолимо растёт и вы понимаете, что чего-то тут не хватает, но чего? Какой версии api нет? нужно разбираться. Подобной ситуации при использовании студии не возникает. При использовании любого элемента, которого у вас нет, она сама определить где и чего не хватает и выкинет окошко с уведомлением. Более того, все будет выбрано за в
| ||||||||||||||||||||||||||||||||||||||||

Автор: Linuxsam

