Many applications are display messages using Dialogs, Toasts, Snackbars, Tutorial, etc.
However, some messages may be overkind and boring.
"Denbun" is a lightweight library.
Denbun("電文") in Japanese is called "Message" in English.
This library supports to suppress messages and adjust frequency.
For example...
- Dialog with "Don't ask again"
- One shot (or N shots) dialog
- Showing once per week
- Dialog for light users
Denbun is save the display time, counts and Frequency.
It helps to calculate the best timing of next display.
Get the latest JARs or grab via Gradle:
compile 'com.yuki312:denbun:<latest version>'
First, initialize DenbunBox
in Application.onCreate
.
DenbunBox.init(new DenbunConfig(this));
Next, get a Denbun
instance.
The message state is restored to the Denbun instance.
Denbun msg = DenbunBox.get(ID);
Following code will save the message state.
Denbun msg = DenbunBox.get(ID);
msg.shown();
Display frequency can be adjusted with the adjuster.
// This message is displayed only once.
Denbun msg = DenbunBox.get(ID, new CountAdjuster(1));
...
msg.isShowable(); // true
msg.shown();
msg.isShowable(); // false
Or adjuster can be preset to the DenbunBox
.
DenbunBox.preset(ID, new CountAdjuster(1));
...
Denbun msg = DenbunBox.get(ID); // Has CountAdjuster.
Following code is suppress message.
Denbun msg = DenbunBox.get(ID);
msg.suppress(true);
There are several adjusters provided in this library.
Adjuster Name | Description |
---|---|
CountAdjuster | For N shots dialogs |
IntervalAdjuster | For periodic dialogs |
CoolDownAdjuster | For periodic and N shots dialogs |
Denbun msg = DenbunBox.find(ID,
s -> s.count == 0 ? Frequency.MIN : Frequency.MAX);
if (msg.isShowable())
msg.shown(); // s.count will increment.
DenbunBox
is configured with DenbunConfig
.
Method | Description |
---|---|
preference | Set SharedPreference to save message history |
daoProvider | Set SharedPreference DAO (For your UnitTest) |
Denbun
save the display history to SharedPreference.
You can find the default SharedPreference path in DenbunConfig.PREF_NAME
.
Denbun
can be created using DenbunBox
.
DenbunBox
has Application scope, you can access DenbunBox
from anywhere in the application and create Denbun
instance.
FrequencyAdjuster
can be preset to the DenbunBox
.
Denbun
uses FrequencyAdjuster
to adjust display frequency.
You can mock/spy the Denbun
data I/O.
DenbunConfig conf = new DenbunConfig(app);
// spy original DaoProvider
Dao.Provider origin = conf.daoProvider();
conf.daoProvider(pref -> (spyDao = spy(origin.create(pref))));
DenbunBox.init(conf);
DenbunBox.find(ID).shown();
verify(spyDao, times(1)).update(any());
Copyright 2017 Matsumura Yuki. Licensed under the Apache License, Version 2.0;