次の構造を持つライブラリを構築しています。
MySDK{
public static void init(Context context){
registerReceivers(); // Register connectivity BroadcastReceiver here
}
public static void performAction(){};
}
意図した使用法: 私のライブラリのユーザーは、作成した最初のアクティビティでinit()を呼び出します。問題は、BroadcastReceiverの登録を解除せず、アプリを閉じるとリークすることです。deinit()というメソッドを作成し、lib のユーザーにActivityを離れるときにそれを呼び出すように依頼することもできますが、リソースを解放するためのより信頼できる方法はありますか?
なぜレシーバーが必要なのですか?
インターネット接続がなく、performAction()がデータを送信できない場合は、接続状態の変化を検出するためにレシーバーを登録します。