# Once **Repository Path**: chinasoft_ohos/Once ## Basic Information - **Project Name**: Once - **Description**: 提供了一个简单的API来跟踪应用程序是否已经在给定的范围内执行了操作 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2021-05-27 - **Last Updated**: 2021-08-31 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Once #### 项目介绍 - 项目名称:Once - 所属系列:openharmony的第三方组件适配移植 - 功能:提供了一个简单的API来跟踪应用程序是否已经在给定的范围内执行了操作 - 项目移植状态:主功能完成 - 调用差异:无 - 开发版本:sdk6,DevEco Studio 2.2 Beta1 - 基线版本: Release v1.3.0 #### 效果演示 ![image text](gif/demo.gif) #### 安装教程 1.在项目根目录下的build.gradle文件中, ``` allprojects { repositories { maven { url 'https://s01.oss.sonatype.org/content/repositories/releases/' } } } ``` 2.在entry模块的build.gradle文件中, ``` dependencies { implementation('com.gitee.chinasoft_ohos:Once:1.0.0') ...... } ``` 在sdk6,DevEco Studio 2.2 Beta1下项目可直接运行 如无法运行,删除项目.gradle,.idea,build,gradle,build.gradle文件, 并依据自己的版本创建新项目,将新项目的对应文件复制到根目录下 #### 使用说明 ```java //进行初始化 public class MyApplication extends AbilityPackage { @Override public void onInitialize() { super.onInitialize(); //初始化Once Once.initialise(this); } } //引入Once对应类 import static jonathanfinerty.once.Amount.exactly; import static jonathanfinerty.once.Once.*; Button oncePerSessionButton = (Button) findComponentById(ResourceTable.Id_once_per_session_button); oncePerSessionButton.setClickedListener(new Component.ClickedListener() { @Override public void onClick(Component component) { if (!beenDone(Once.THIS_APP_SESSION, SHOW_NEW_SESSION_DIALOG)) { showDialog("This dialog should only appear once per app session"); markDone(SHOW_NEW_SESSION_DIALOG); } } }); Button oncePerInstallButton = (Button) findComponentById(ResourceTable.Id_once_per_install_button); oncePerInstallButton.setClickedListener(new Component.ClickedListener() { @Override public void onClick(Component component) { if (!beenDone(THIS_APP_INSTALL, SHOW_FRESH_INSTALL_DIALOG)) { showDialog("This dialog should only appear once per app installation"); markDone(SHOW_FRESH_INSTALL_DIALOG); } } }); Button oncePerVersionButton = (Button) findComponentById(ResourceTable.Id_once_per_version_button); oncePerVersionButton.setClickedListener(new Component.ClickedListener() { @Override public void onClick(Component component) { if (!beenDone(Once.THIS_APP_VERSION, SHOW_NEW_VERSION_DIALOG)) { showDialog("This dialog should only appear once per app version"); markDone(SHOW_NEW_VERSION_DIALOG); } } }); Button oncePerMinuteButton = (Button) findComponentById(ResourceTable.Id_once_per_minute_button); oncePerMinuteButton.setClickedListener(new Component.ClickedListener() { @Override public void onClick(Component component) { if (!beenDone(TimeUnit.MINUTES, 1, SHOW_MINUTE_DIALOG)) { showDialog("This dialog should only appear once per minute"); markDone(SHOW_MINUTE_DIALOG); } } }); Button oncePerSecondButton = (Button) findComponentById(ResourceTable.Id_once_per_second_button); oncePerSecondButton.setClickedListener(new Component.ClickedListener() { @Override public void onClick(Component component) { if (!beenDone(1000L, SHOW_SECOND_DIALOG)) { showDialog("This dialog should only appear once per second"); markDone(SHOW_SECOND_DIALOG); } } }); Button oncePerThreePressesButton = (Button) findComponentById(ResourceTable.Id_three_presses_button); oncePerThreePressesButton.setClickedListener(new Component.ClickedListener() { @Override public void onClick(Component component) { String buttonPressedTag = "button pressed"; markDone(buttonPressedTag); if (beenDone(buttonPressedTag, exactly(3))) { showDialog("This dialog should only appear once every three presses"); clearDone(buttonPressedTag); } } }); Button resetButton = (Button) findComponentById(ResourceTable.Id_reset_all_button); resetButton.setClickedListener(new Component.ClickedListener() { @Override public void onClick(Component component) { Once.clearAll(); } }); ``` ```xml