2017-01-09 5 views
0

状況を正しく理解していない可能性がありますが、RxBleClientのインスタンスを1つしか持たないことが重要だと言われています。RxBleClientのインスタンスを1つだけ確保する

これは、Applicationクラスの静的メンバーにすることで簡単に達成できませんか?

class MyApp extends Application { 
    static RxBleClient rxBleClient; 
    ... 
} 

はまた、私は(あなたのApplicationクラスから)このコードを理解することに苦労しています:

public static RxBleClient getRxBleClient(Context context) { 
     RxBleApp application = (RxBleApp) context.getApplicationContext(); 
     return application.rxBleClient; 
    } 

あなたは私はそれがやっているものを理解するのに役立ち、そしてなぜだろうか?単純にできない理由

return rxBleClient; 

答えて

0

これは、クラスの静的メンバーを取得することで実現できます。それよりも(サンプル部分のテストがあれば)RxBleAppのインスタンスを通過させる方がよりエレガントです。

RxBleClientは、RxBleAppで参照されています。これは、android Applicationです。アプリケーションコンテキストは、Contextから取得できます。

+0

BLEコードをバインドされたサービスにリファクタリングして配置する予定です。これは妥当ですか?アイデア:私の新しいBluetoothServiceクラスで、これを入れてみましょう: 'static RxBleClient mBleClient;'そしてそのonCreate()に 'mBleClient = RxBleClient.create(this);'を入れてください。次に、メソッド 'public static RxBleClient getRxBleClient(){return mBleClient;}を追加します。 } '。私が理解すれば、私がサービスをバインドするとき、そのインスタンスの参照を与えられますが、この参照で静的メソッドを呼び出すことは可能です。私はまだアプリケーションの新しいインスタンスを作成して破棄する理由を完全に理解していません。あなたは説明できますか? –

関連する問題