2016-12-19 5 views
1

Мне нужно как можно больше сохранить имя пользователя и URL-адрес аватара для другого использования, поэтому я вставляю в базу данных функцию finalize объекта userinfo. Это плохо или у вас есть проблемы, так как я думал, что finalize вызывается, когда объект собирается собирать gc, поэтому плохо что-то делать.Android: вставить в базу данных, пока сущность вызывает finalize

код:

enter image description here

enter image description here

+0

Пожалуйста, не оставляйте скриншоты кода. Изображения не могут быть найдены, не могут быть скопированы для тестирования и препятствовать доступу. Вместо этого включите соответствующий код как [форматированный текст] (http://stackoverflow.com/help/formatting). – Meyer

ответ

0

Да, вообще говоря, это плохая практика для выполнения финализации, как это будет замедлять сбор мусора, особенно в вашем случае, как вы вставить что-то в базу данных, которая является медленной операцией. Итак, представьте, что GC делает стоп-мир и у вас есть много экземпляров этого объекта для сбора, ваше приложение будет непригодным для использования в течение более длительного периода времени.

Пожалуйста, обратите внимание, что финализации должны быть реализованы в блоке try/finally, чтобы гарантировать, что финализации из суперкласса называется все, что происходит, в следующем:

@Override 
protected void finalize() throws Throwable { 
    try { 
     // Something here 
    } finally { 
     super.finalize(); 
    } 
}