Где использование является пустым зарегистрированным BSTR?

Попробуйте этот код,

Код диспетчера сеансов:

SharedPreferences sharedPreferences;
SharedPreferences.Editor editor;
Context context;

public static final String KEY_CHECKIN= "checkin";

public void setCheckin(boolean login){
    editor = sharedPreferences.edit();
    editor.putBoolean(KEY_CHECKIN,checkin);
    editor.apply();
}

public boolean getCheckin(){
    return sharedPreferences.getBoolean(KEY_CHECKIN,false);
}

В вашем коде Java:

SessionManager sessionmanager;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
sessionmanager = new SessionManager(this);

// Условие для регистрации

[112 ]

// Получение значения, когда пользователь снова открывает приложение:

if(sessionmanager.getCheckin()){}////proceed with your logic.
5
задан Community 23 May 2017 в 12:12
поделиться

2 ответа

Что ж, ссылка, приведенная в принятом ответе на этот вопрос, ведет на статью Эрика Липперта Полное руководство Эрика по семантике BSTR . Хотя это определенно не официальная документация, Липперт является хорошо известным специалистом по COM (особенно в области сценариев).

Однако официальная документация говорит об этом. :

BSTR без элементов данных - это либо пустой BSTR, либо NULL BSTR. Пустой BSTR указывает на существующее, но нулевое значение данных. NULL BSTR указывает на значение данных, которого нет.

Итак, официально они оба BSTR s без элементов данных, но с немного другой семантикой (хотя нет ничего, чтобы сказать, что эти 2 случая требуют обрабатываться иначе в вашем приложении). В этом случае я Конечно, я буду следовать совету Липперта относиться к ним одинаково. Для меня его реальный опыт работы с реальными реализациями имеет больший вес, чем одно предложение в официальном документе BSTR.

6
ответ дан 13 December 2019 в 19:35
поделиться

Майкл Берр дает то, что я думаю, должно быть принятым ответом. К сожалению, страница для BSTR в MSDN не документирует эту практику.

Кроме того, вы можете сделать вывод об этом поведении на следующих страницах в документации MSDN:

  • SysFreeString page reports что если bstr равно null , функция просто возвращает.
  • Страница SysStringLen сообщает, что передача null для параметра bstr возвращает ноль длины строки.
  • Страница SysStringByteLen сообщает о таком же поведении; null означает нулевую длину.

Однако документация не является полной:

  • SysReAllocString не упоминает, что произойдет, если * pbstr будет null .
  • SysReAllocStringLen не упоминает, что произойдет, если * pbstr будет null .
4
ответ дан 13 December 2019 в 19:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: