mirror of https://github.com/M66B/FairEmail.git
Improved two state lifecycles
This commit is contained in:
parent
722012609b
commit
f93eb61b04
|
@ -291,7 +291,7 @@ public class AdapterFolder extends RecyclerView.Adapter<AdapterFolder.ViewHolder
|
|||
tvError.setVisibility(folder.error != null ? View.VISIBLE : View.GONE);
|
||||
|
||||
childs.setShowHidden(show_hidden);
|
||||
cowner.restart();
|
||||
cowner.recreate();
|
||||
if (account > 0 && folder.childs > 0 && !folder.collapsed) {
|
||||
DB db = DB.getInstance(context);
|
||||
cowner.start();
|
||||
|
@ -737,6 +737,11 @@ public class AdapterFolder extends RecyclerView.Adapter<AdapterFolder.ViewHolder
|
|||
return new ViewHolder(inflater.inflate(R.layout.item_folder, parent, false));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onViewRecycled(@NonNull ViewHolder holder) {
|
||||
holder.cowner.stop();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
|
||||
holder.unwire();
|
||||
|
|
|
@ -654,6 +654,8 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
|
|||
}
|
||||
|
||||
private void clearExpanded() {
|
||||
cowner.stop();
|
||||
|
||||
grpHeaders.setVisibility(View.GONE);
|
||||
grpAttachments.setVisibility(View.GONE);
|
||||
grpExpanded.setVisibility(View.GONE);
|
||||
|
@ -848,7 +850,8 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
|
|||
|
||||
// Attachments
|
||||
bindAttachments(message, properties.getAttachments(message.id));
|
||||
cowner.restart();
|
||||
cowner.recreate();
|
||||
cowner.start();
|
||||
db.attachment().liveAttachments(message.id).observe(cowner, new Observer<List<EntityAttachment>>() {
|
||||
@Override
|
||||
public void onChanged(@Nullable List<EntityAttachment> attachments) {
|
||||
|
@ -3063,7 +3066,7 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
|
|||
|
||||
@Override
|
||||
public void onViewRecycled(@NonNull ViewHolder holder) {
|
||||
holder.clearExpanded();
|
||||
holder.cowner.stop();
|
||||
}
|
||||
|
||||
void setSelectionTracker(SelectionTracker<Long> selectionTracker) {
|
||||
|
|
|
@ -15,19 +15,7 @@ public class TwoStateOwner implements LifecycleOwner {
|
|||
|
||||
TwoStateOwner(String aname) {
|
||||
name = aname;
|
||||
|
||||
// Initialize
|
||||
registry = new LifecycleRegistry(this);
|
||||
registry.markState(Lifecycle.State.CREATED);
|
||||
|
||||
// Logging
|
||||
registry.addObserver(new LifecycleObserver() {
|
||||
@OnLifecycleEvent(Lifecycle.Event.ON_ANY)
|
||||
public void onAny() {
|
||||
if (BuildConfig.DEBUG)
|
||||
Log.i("LifeCycle " + name + " state=" + registry.getCurrentState());
|
||||
}
|
||||
});
|
||||
create();
|
||||
}
|
||||
|
||||
TwoStateOwner(LifecycleOwner owner, String aname) {
|
||||
|
@ -44,6 +32,20 @@ public class TwoStateOwner implements LifecycleOwner {
|
|||
});
|
||||
}
|
||||
|
||||
private void create() {
|
||||
// Initialize
|
||||
registry = new LifecycleRegistry(this);
|
||||
registry.addObserver(new LifecycleObserver() {
|
||||
@OnLifecycleEvent(Lifecycle.Event.ON_ANY)
|
||||
public void onAny() {
|
||||
if (BuildConfig.DEBUG)
|
||||
Log.i("LifeCycle " + name + " state=" + registry.getCurrentState() + " " + registry);
|
||||
}
|
||||
});
|
||||
|
||||
registry.markState(Lifecycle.State.CREATED);
|
||||
}
|
||||
|
||||
void start() {
|
||||
registry.markState(Lifecycle.State.STARTED);
|
||||
}
|
||||
|
@ -57,6 +59,11 @@ public class TwoStateOwner implements LifecycleOwner {
|
|||
start();
|
||||
}
|
||||
|
||||
void recreate() {
|
||||
destroy();
|
||||
create();
|
||||
}
|
||||
|
||||
void destroy() {
|
||||
Lifecycle.State state = registry.getCurrentState();
|
||||
if (!state.equals(Lifecycle.State.CREATED))
|
||||
|
|
Loading…
Reference in New Issue