1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/HarmonyOS-tpc-xUtils3

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

xUtils3

xUtils содержит ORM, HTTP(S), Image и View аннотации. Это мощный и расширяемый инструмент.

Обзор

1. ORM:

Эффективный и стабильный инструмент ORM. Он упрощает поддержку cookie и кэширования при реализации HTTP-интерфейсов.

  • Гибкий интерфейс, похожий на LINQ выражения.
  • Производительность аналогична greenDao.

2. HTTP(S):

Основан на UrlConnection.

  • Поддерживает 11 видов глаголов: GET, POST, PUT, PATCH, HEAD, MOVE, COPY, DELETE, OPTIONS, TRACE, CONNECT.
  • Поддержка скачивания.
  • Поддержка cookie (реализованы domain, path, expiry и другие функции).
  • Поддержка кэширования (реализованы Cache-Control, Last-Modified, ETag и другие функции, используется двойной механизм LRU для очистки содержимого при переполнении кэша).
  • Поддержка асинхронных и синхронных вызовов.

3. Image:

Благодаря поддержке HTTP(S) и его функций загрузки и кэширования, реализация модуля Image довольно проста.

  • Поддерживается только формат JPG, GIF не поддерживается.

4. View аннотации:

Модуль View аннотаций содержит всего около 400 строк кода, но он гибкий и поддерживает различные виды View инъекций и событий привязки.

  • События аннотируются и не подвержены влиянию обфускации.
  • Можно привязать несколько методов к одному слушателю.

Интеграция:

Способ 1:
Через library создайте har пакет и добавьте его в папку libs.
В файле gradle в разделе entry добавьте следующий код:
implementation fileTree(dir: 'libs', include: ['*.jar', '*.har'])

Способ 2:
allprojects{
    repositories{
        mavenCentral()
    }
}
implementation 'io.openharmony.tpc.thirdlib:xUtils3:1.0.0'

Требования для запуска entry:

Используйте DevEco studio и загрузите SDK. Измените версию classpath в файле build.gradle в проекте на соответствующую версию (версия, используемая в вашем новом проекте IDE).

Пример

Инициализация:
// В методе onCreate приложения инициализируйте
@Override
public void onCreate() {
    super.onCreate();
    x.Ext.init(this);
    x.Ext.setDebug(BuildConfig.DEBUG); // Отладка влияет на производительность.
    ...
}

Использование @Event аннотаций (@ContentView, @ViewInject и других примеров, см. sample проект)

/**
 * 1. Метод должен быть приватным.
 * 2. Форма параметров метода должна соответствовать интерфейсу Listener.
 * 3. Параметр value аннотации может быть массивом: value={id1, id2, id3}.
 * 4. Другие параметры описаны в классе org.xutils.event.annotation.Event.
**/
@Event(value = {ResourceTable.Id_btn_viewbind})
private void onTest1Click(Component view) {

...
}

Работа с базой данных

/**
 * Пример работы с базой данных.
*/
public class DbAbilitySlice extends AbilitySlice {

    @ViewInject(ResourceTable.Id_btn_add)
    Button btnDbAdd;

    @ViewInject(ResourceTable.Id_btn_del)
    Button btnDbDel;

    @ViewInject(ResourceTable.Id_btn_update)
    Button btnDbUpdate;

    @ViewInject(ResourceTable.Id_btn_select)
    Button btnDbSelect;

    @ViewInject(ResourceTable.Id_text_show)
    Text txtShow;

    DbManager.DaoConfig daoConfig;

    @Override
    public void onStart(Intent intent) {
        super.onStart(intent);
        super.setUIContent(ResourceTable.Layout_ability_db);
        x.view().inject(this);

        daoConfig = new DbManager.DaoConfig()
                .setDbName("testaa.db")
                // Если не указать dbDir, по умолчанию будет использоваться частный каталог приложения.
                .setDbDir(new File("/sdcard")) // "sdcard" не является наилучшей практикой, здесь это сделано для простоты.
                .setDbVersion(2)
                .setDbOpenListener(new DbManager.DbOpenListener() {
                    @Override
                    public void onDbOpened(DbManager db) {
                        // Включить WAL для значительного ускорения записи.
//                        db.getDatabase().enableWriteAheadLogging();
                    }
                })
                .setDbUpgradeListener(new DbManager.DbUpgradeListener() {
                    @Override
                    public void onUpgrade(DbManager db, int oldVersion, int newVersion) {
                        // TODO: ...
                        // db.addColumn(...);
                        // db.dropTable(...);
                        // ...
                        // или
                        // db.dropDb();
                    }
                });


    }

    @Event(value = {ResourceTable.Id_btn_add, ResourceTable.Id_btn_del, ResourceTable.Id_btn_update, ResourceTable.Id_btn_select})
    private void onTest1Click(Component view) {
        if (view.getId() == ResourceTable.Id_btn_add) {
            dbSave();
        }
        if (view.getId() == ResourceTable.Id_btn_del) {
            dbDel();
        }
        if (view.getId() == ResourceTable.Id_btn_update) {
            dbUpdate();
        }
        if (view.getId() == ResourceTable.Id_btn_select) {
            dbSelect();
        }
    }

    /**
     * Добавление.
    */
    private void dbSave() {
        try {
            btnDbAdd.setText("Добавление");
            DbManager db = x.getDb(daoConfig);
            ArrayList<ChildInfo> childInfos = new ArrayList<>();
            childInfos.add(new ChildInfo("zhangsan"));
            childInfos.add(new ChildInfo("lisi"));

``` **childInfos.add(new ChildInfo("wangwu"));**

childInfos.добавить(новый ChildInfo («ванву»));

**childInfos.add(new ChildInfo("zhaoliu"));**

childInfos.добавить(новый ChildInfo («чжаолю»));

**childInfos.add(new ChildInfo("qianqi"));**

childInfos.добавить(новый ChildInfo («цяньци»));

**childInfos.add(new ChildInfo("sunba"));**

childInfos.добавить(новый ChildInfo («суньба»));

**db.save(childInfos);**

db.сохранить(childInfos);

**btnDbAdd.setText("添加成功");**

btnDbAdd.установитьТекст("Добавление успешно");

/**
 * 删除
 */

private void dbDel() {
    try {
        **btnDbDel.setText("删除");**

        btnDbDel.установитьТекст("Удаление");

        DbManager db = x.getDb(daoConfig);

        db.delete(ChildInfo.class);

        **btnDbDel.setText("删除成功");**

        btnDbDel.установитьТекст("Удаление успешно");
    } catch (Exception e) {

    }
}

/**
 * 修改
 */

private void dbUpdate() {
    try {
        **btnDbUpdate.setText("修改");**

        btnDbUpdate.установитьТекст("Изменение");

        DbManager db = x.getDb(daoConfig);

        ChildInfo first = db.findFirst(ChildInfo.class);

        first.setcName("zhansan2");

        db.update(first, "c_name"); //c_name:表中的字段名

        **btnDbUpdate.setText("修改成功");**

        btnDbUpdate.установитьТекст("Изменение успешно");
    } catch (Exception e) {

    }
}

/**
 * 查询
 */

private void dbSelect() {
    try {
        **btnDbSelect.setText("查询");**

        btnDbSelect.установитьТекст("Запрос");

        DbManager db = x.getDb(daoConfig);

        String result = "";
//        ChildInfo first = db.findFirst(ChildInfo.class);
//        List<ChildInfo> all = db.selector(ChildInfo.class).where("id", ">", 0).and("id", "<", 4).findAll();

        List<ChildInfo> all = db.selector(ChildInfo.class).findAll();

        for (ChildInfo childInfo : all) {
            result += childInfo.toString()+"\n";
        }

        **btnDbSelect.setText("查询成功");**

        btnDbSelect.установитьТекст("Успешный запрос");

        txtShow.setText("查询结果:"+result);
    } catch (Exception e) {

    }
}

**@Event(value = {ResourceTable.Id_btn_http_get})**

@Событие(значение = {ResourceTable.Id_btn_http_get})

private void onTest2Click(View view) {
    RequestParams params = new RequestParams("https://www.baidu.com/s");
    // params.setSslSocketFactory(...); // 如果需要自定义SSL
    params.addQueryStringParameter("wd", "xUtils");

    x.http().get(params, new Callback.CommonCallback<String>() {
        @Override
        public void onSuccess(String result) {
            Toast.makeText(x.app(), result, Toast.LENGTH_LONG).show();
        }

        @Override
        public void onError(Throwable ex, boolean isOnCallback) {
            Toast.makeText(x.app(), ex.getMessage(), Toast.LENGTH_LONG).show();
        }

        @Override
        public void onCancelled(CancelledException cex) {
            Toast.makeText(x.app(), "cancelled", Toast.LENGTH_LONG).show();
        }

        @Override
        public void onFinished() {

        }
    });
}

**x.image().bind(imageView, url, imageOptions, new Callback.CommonCallback<PixelMap>() {...});**

x.image().привязать(imageView, url, imageOptions, новый Callback.CommonCallback<PixelMap>(){...});

## LICENSE

Copyright 2014-2015 wyouflf

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Описание недоступно Развернуть Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/HarmonyOS-tpc-xUtils3.git
git@api.gitlife.ru:oschina-mirror/HarmonyOS-tpc-xUtils3.git
oschina-mirror
HarmonyOS-tpc-xUtils3
HarmonyOS-tpc-xUtils3
master