私はいくつかのライブラリコードをjarファイルとして配布しています。開発者はアプリケーションIDを使用して初期化する必要があります。初期化は単なる関数呼び出しです。Androidでのグローバル初期化
MyLibrary.initialize("16ea53b");
難しいことは、この初期化呼び出しを行う方法を開発者に指示する方法がわかりません。最初は、主なアクティビティの1つの静的イニシャライザブロックが最も簡単な方法であると考えました。問題は、ユーザーが他の何らかのアクティビティーまたはインテントによってアプリケーションに入り、メインアクティビティーがロードされないことです。アプリケーションの起動方法に関係なく、アプリケーションの起動時にコード行が実行されるようにする一般的な方法はありますか?
初期化コールは冪等であるため、使用できるすべての場所でこの初期化コールを行うように伝えることができますが、それは面倒です。
私は私のライブラリにSharedPreferencesへのアクセスを与える方法と同じ問題があると思います - 私はSharedPreferencesにアクセスするために開発者に有効なContextでライブラリを初期化させる必要があります。または、Applicationオブジェクトにアクセスする別の方法がありますか?それは途方もない話です。 – lacker
Androidのガイドラインによると、Applicationクラスからサブクラス化し、それを使ってグローバルデータの保存/管理や静的なシングルトンクラスの使用が可能です。私は個人的にアプリケーションオブジェクトを使用しています。したがって、有効なコンテキストでライブラリを初期化する開発者の方法は意味があります。私はこれのための他のメカニズムについてもっと知りたいです。 – omermuhammed
私はまだ同じ問題を抱えています - 開発者はどこでContextを使ってライブラリを初期化しますか?彼らは、アプリケーションを開始する可能性のあるすべてのクラスからそれを行う必要があります。 – lacker