私のアンドロイドアプリケーションでMVPパターンを使用しています。私は接続クラスのステータスをチェックするアプリケーションクラスにいくつかの静的メソッドを持っています。私のアプリケーションクラスで宣言されているプレゼンターの静的変数を使用することをお勧めします
public class AppModule extends Application {
public static boolean isNetworkAvailable() {
ConnectivityManager connectivityManager
= (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
return activeNetworkInfo != null && activeNetworkInfo.isConnected();
}
}
私はインターネット接続を確認するためにプレゼンターでそのアプリケーションレベルの静的メソッドを使用しています。
public class ActivityWallPresenter {
private CreatrixTestCall creatrixTestCall;
@Inject
public ActivityWallPresenter(CreatrixTestCall creatrixTestCall) {
this.creatrixTestCall = creatrixTestCall;
}
public void loadPosts(ActivityWallFragmentContract activityWallFragment) {
this.fragmentContract = activityWallFragment;
if (AppModule.isNetworkAvailable()) {
fragmentContract.showProgress();
callWeb();
} else {
fragmentContract.onNetworkDisconnected();
}
}
静的メソッドを呼び出すとよいでしょうか?もしそうでなければ私には他のアプローチを提案してください。
静的メソッドではありますが、ここに配置することはできますが、優れたコーディング手法は、別のクラス(utils.javaまたはglobalMethods.javaなど)に配置することです。 –
「良いアイデア」として定義した内容に依存します。あなたが静的メンバーに変数を割り当てない限り、私はそこにそれほど害はないと思います。しかし、私は静的関数で変数 'context'を使用していることがわかります。それが 'Activity'のインスタンスであれば、そのオブジェクトはガベージコレクションされず、メモリリーク(一種の)を引き起こします。 – 0xDEADC0DE
これは仮定に依存して、あなたのコードを作ることができます。真のOOPアプローチを使いたい場合は、コンテキストを指定して接続性をチェックし、それをプレゼンタに注入するクラスを作成する必要があります。しかし、コード内にプロシージャを置くことができれば、静的メソッドが最善のアプローチですと私は思います。 2番目の質問は、この静的関数を配置する場所です –