ActivityLifecycleHelper implementation
Yes. It seems like a bad design or I would say not thought through given that you're building a library project which will be used by other apps.

First of all,
in your library initialization, you should ask for Application reference rather than Context reference.

For example,

if your library has an init method like this,

MyLibrary.init(Context applicationContext);

then it should be converted to accept Application object like this,

MyLibrary.init(Application application);

Then,

inside that init method, you should just register your class which is implementing Application.ActivityLifecycleCallbacks. 

application.registerActivityLifecycleCallbacks(ActivityLifecycleHelper.getInstance());

Make sure your class is a singleton. In your example, your ActivityLifecycleHelper class is not a singleton which is definitely a bad design pattern given that you're dealing with global level callbacks and want to initialize only once.

It might look like this,

public class ActivityLifecycleHelper implements Application.ActivityLifecycleCallbacks {
private static ActivityLifecycleHelper ourInstance = new ActivityLifecycleHelper();

private ActivityLifecycleHelper() {
}

public static ActivityLifecycleHelper getInstance() {
    return ourInstance;
}

@Override
public void onActivityCreated(Activity activity, Bundle bundle) {
}

@Override
public void onActivityStarted(Activity activity) {
}

@Override
public void onActivityResumed(Activity activity) {
}

@Override
public void onActivityPaused(Activity activity) {
}

@Override
public void onActivityStopped(Activity activity) {
}

@Override
public void onActivitySaveInstanceState(Activity activity, Bundle bundle) {

}

@Override
public void onActivityDestroyed(Activity activity) {

}
}


Also, I don't understand why you have two classes here. What's the use case of Usage class ? Something seems wrong in this two class design.

I hope this helps. Let me know if you want me to elaborate anything.