如果我有这样的MainActivity:
public class MainActivity extends AppCompatActivity
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Set up database
RealmConfiguration realmConfiguration = new RealmConfiguration.Builder(this).build();
Realm.deleteRealm(realmConfiguration); // Clean slate
Realm.setDefaultConfiguration(realmConfiguration); // Make this Realm the default
realm = Realm.getDefaultInstance();
}
@Override
public void onDestroy() {
realm.close();
super.onDestroy();
}
}
Run Code Online (Sandbox Code Playgroud)
我realm.getDefaultInstance()在另一个类(相同的线程)中使用这样的:
public class ViewBookActivity extends Activity {
private Realm realm;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_scan_result);
realm = Realm.getDefaultInstance();
}
}
Run Code Online (Sandbox Code Playgroud)
我应该再调用realm.close()中onDestroy()的ViewBookActivity?或者关闭它是否足够MainActivity?
领域文档说:
Realm实例是引用计数,这意味着如果在线程中调用getInstance()两次,则还必须两次调用close().
但我不确定这是否适用getDefaultInstance().
另外,Realm.getDefaultInstance()即使在其他线程中,如果我在写入它时关闭它,它是否可以坚持下去?我真的不明白它的潜在用途Realm.getInstance(Context context).
谢谢
最佳做法是,如果您打开Realm,onCreate则应onDestroy在所有活动中再次关闭它,因为这意味着当您的所有活动都已关闭时,引用计数将达到0.所以你的情况:是的,你应该这样做既中MainActivity和ViewBookActivity
关于Realm.getDefaultInstance().这只是一个简写Realm.getInstance(myConfig),所以你也必须打电话close()给那些.
Realm.getInstance(Context)它只是一个简写,Realm.getInstance(new RealmConfiguration.Builder(context).build())旨在让我们很容易在小例子中开始使用Realm.如果您打算创建更大的应用程序,则应手动创建配置.但我同意这可能令人困惑,我们应该考虑将它们全部删除.
| 归档时间: |
|
| 查看次数: |
1881 次 |
| 最近记录: |