2017-01-09 3 views
0

Возможно, я неправильно понимаю ситуацию, но нам говорят, что важно иметь только один экземпляр RxBleClient.Обеспечение только одного экземпляра RxBleClient

Не удалось ли это сделать, сделав его статическим членом класса 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 который является андроидом Application. Контекст приложения можно получить из Context.

+0

Я рефакторинг и планирование, чтобы положить BLE-код в Bound Service. Это разумно? Идея: в моем новом классе BluetoothService поместите это: 'static RxBleClient mBleClient;'. И в своем onCreate() поместите 'mBleClient = RxBleClient.create (this);'. Затем добавьте метод public public RxBleClient getRxBleClient() {return mBleClient; } '. Если я понимаю, когда я привязываю Сервис, мне предоставляется ссылка на _instance_, но это нормально, чтобы вызвать его статические методы с помощью этой ссылки. Я до сих пор не совсем понимаю, почему вы создаете, а затем отбрасываете новый экземпляр приложения. Могли бы вы объяснить? –