Что такое начальная загрузка?

Вы можете использовать свою собственную логику, которая рекурсивно решает вложенные строки.

/**
 * Regex that matches a resource string such as <code>@string/a-b_c1</code>.
 */
private static final String REGEX_RESOURCE_STRING = "@string/([A-Za-z0-9-_]*)";

/** Name of the resource type "string" as in <code>@string/...</code> */
private static final String DEF_TYPE_STRING = "string";

/**
 * Recursively replaces resources such as <code>@string/abc</code> with
 * their localized values from the app's resource strings (e.g.
 * <code>strings.xml</code>) within a <code>source</code> string.
 * 
 * Also works recursively, that is, when a resource contains another
 * resource that contains another resource, etc.
 * 
 * @param source
 * @return <code>source</code> with replaced resources (if they exist)
 */
public static String replaceResourceStrings(Context context, String source) {
    // Recursively resolve strings
    Pattern p = Pattern.compile(REGEX_RESOURCE_STRING);
    Matcher m = p.matcher(source);
    StringBuffer sb = new StringBuffer();
    while (m.find()) {
        String stringFromResources = getStringByName(context, m.group(1));
        if (stringFromResources == null) {
            Log.w(Constants.LOG,
                    "No String resource found for ID \"" + m.group(1)
                            + "\" while inserting resources");
            /*
             * No need to try to load from defaults, android is trying that
             * for us. If we're here, the resource does not exist. Just
             * return its ID.
             */
            stringFromResources = m.group(1);
        }
        m.appendReplacement(sb, // Recurse
                replaceResourceStrings(context, stringFromResources));
    }
    m.appendTail(sb);
    return sb.toString();
}

/**
 * Returns the string value of a string resource (e.g. defined in
 * <code>values.xml</code>).
 * 
 * @param name
 * @return the value of the string resource or <code>null</code> if no
 *         resource found for id
 */
public static String getStringByName(Context context, String name) {
    int resourceId = getResourceId(context, DEF_TYPE_STRING, name);
    if (resourceId != 0) {
        return context.getString(resourceId);
    } else {
        return null;
    }
}

/**
 * Finds the numeric id of a string resource (e.g. defined in
 * <code>values.xml</code>).
 * 
 * @param defType
 *            Optional default resource type to find, if "type/" is not
 *            included in the name. Can be null to require an explicit type.
 * 
 * @param name
 *            the name of the desired resource
 * @return the associated resource identifier. Returns 0 if no such resource
 *         was found. (0 is not a valid resource ID.)
 */
private static int getResourceId(Context context, String defType,
        String name) {
    return context.getResources().getIdentifier(name, defType,
            context.getPackageName());
}

Например, из Activity вызывает его так

replaceResourceStrings(this, getString(R.string.message_text));
596
задан Alex Basson 10 August 2009 в 12:16
поделиться

6 ответов

«Самостоятельная загрузка» происходит от термина «подтягивание себя с помощью собственных бутстрепов». Это вы можете получить из Википедии .

В вычислительной технике загрузчик начальной загрузки - это первая часть кода, которая запускается при запуске машины и отвечает за загрузку остальной части операционной системы. В современных компьютерах он хранится в ПЗУ, но я помню процесс начальной загрузки на PDP-11, когда вы вставляли биты с помощью переключателей на передней панели, чтобы загрузить определенный сегмент диска в память, а затем запускали его. Излишне говорить, что загрузчик начальной загрузки обычно довольно мал.

«Самозагрузка» также используется как термин для построения системы, использующей себя - или, вернее, предыдущую версию. Например, ANTLR версии 3 написан с использованием синтаксического анализатора, разработанного в ANTLR версии 2.

307
ответ дан 22 November 2019 в 21:55
поделиться

Пример начальной загрузки есть в некоторых веб-платформах. Вы вызываете index.php (загрузчик), а затем он загружает помощники фреймворка, модели, конфигурацию, а затем загружает контроллер и передает ему управление.

Как видите, это простой файл, который запускает большой процесс.

241
ответ дан 22 November 2019 в 21:55
поделиться

См. Статью в Википедии о начальной загрузке .

Есть раздел и ссылки, объясняющие, что это означает в Вычисления . Он имеет четыре различных применения в этой области.

Вот несколько цитат, но для более подробного объяснения и альтернативных значений обратитесь к ссылкам выше.

«... это метод, с помощью которого простая компьютерная программа активирует более сложную систему программ ».

« Другое использование термина начальной загрузки - это использование компилятора для компиляции самого себя, сначала написав небольшую часть компилятора нового языка программирования на существующем языке, чтобы скомпилировать больше программы нового компилятора, написанные на новом языке. "

51
ответ дан 22 November 2019 в 21:55
поделиться

В контексте разработки приложений термин «начальная загрузка» обычно возникает, когда речь идет о модульных и / или автоматически обновляемых программного обеспечения.

Вместо того, чтобы пользователь загружал все приложение, включая функции, которые ему не нужны, и повторно загружал и обновлял его вручную всякий раз, когда есть обновление, пользователь только загружает и запускает небольшой исполняемый файл «начальной загрузки», который, в свою очередь, загружает и устанавливает те части приложения, которые нужны пользователю. Кроме того, компонент начальной загрузки может искать обновления и устанавливать их при каждом запуске.

23
ответ дан 22 November 2019 в 21:55
поделиться

Для полноты картины это также довольно важный (и относительно новый) метод статистики, который использует повторную выборку / моделирование для вывода свойств совокупности из выборки. У него есть собственная длинная статья в Википедии о загрузке (статистика) .

14
ответ дан 22 November 2019 в 21:55
поделиться

Алекс, это практически то, что делает ваш компьютер при загрузке. («Загрузка» компьютера на самом деле происходит от слова bootstrapping)

Первоначально запускается небольшая программа в вашем BIOS. Он содержит достаточно машинного кода для загрузки и запуска более крупной и сложной программы.

Эта вторая программа, вероятно, похожа на NTLDR (в Windows) или LILO (в Linux), которая затем выполняется и может загружаться, а затем запускаться, остальная часть операционной системы.

15
ответ дан 22 November 2019 в 21:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: