我可以使用使用单例实例作为数据源的适配器吗?我不会对Views / Context有任何静态引用,只有普通数据存储在singleton中。这种解决方案会有任何泄漏或任何缺点吗?
public class MyAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
/* SINGLETON */
private DataManager manager;
public MyAdapter(DataManager manager) {
this.manager = manager;
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
// create vh
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
// bind vh
}
@Override
public int getItemCount() {
return manager.itemsCount();
}
}
DataManager是一个单例对象,用于保存我的服务中的状态/数据。
提前致谢。
答案 0 :(得分:1)
由于它是一个单例,这意味着该类保存对该类实例的引用,因此数据将始终保存在内存中。这可能会导致您的应用在拥有大量资源时响应速度变慢。
此外,如果您的应用占用空间很大,那么在内存不足的情况下,Android操作系统更有可能销毁您的应用。
如果可能(通常是这样),请避免单身。
答案 1 :(得分:1)
您应该使用或不使用两种情况。
答案 2 :(得分:1)
引用单例的适配器不会泄漏任何东西。如果数据管理器未正确实施,则可能会泄漏内存。
使用单例来存储静态数据就好了。您可以在使用它时处理数据。