Dispose everything properly

Signed-off-by: Mario Danic <mario@lovelyhq.com>
This commit is contained in:
Mario Danic 2018-08-16 22:08:42 +02:00
parent 2022d07671
commit 08efe40d28
4 changed files with 13 additions and 24 deletions

View File

@ -30,7 +30,6 @@ import android.support.multidex.MultiDex;
import android.support.multidex.MultiDexApplication; import android.support.multidex.MultiDexApplication;
import android.util.Log; import android.util.Log;
import com.nextcloud.talk.BuildConfig;
import com.nextcloud.talk.dagger.modules.BusModule; import com.nextcloud.talk.dagger.modules.BusModule;
import com.nextcloud.talk.dagger.modules.ContextModule; import com.nextcloud.talk.dagger.modules.ContextModule;
import com.nextcloud.talk.dagger.modules.DatabaseModule; import com.nextcloud.talk.dagger.modules.DatabaseModule;
@ -51,11 +50,11 @@ import org.webrtc.PeerConnectionFactory;
import org.webrtc.voiceengine.WebRtcAudioManager; import org.webrtc.voiceengine.WebRtcAudioManager;
import org.webrtc.voiceengine.WebRtcAudioUtils; import org.webrtc.voiceengine.WebRtcAudioUtils;
import java.security.GeneralSecurityException;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import javax.inject.Singleton; import javax.inject.Singleton;
import androidx.work.Configuration;
import androidx.work.ExistingPeriodicWorkPolicy; import androidx.work.ExistingPeriodicWorkPolicy;
import androidx.work.OneTimeWorkRequest; import androidx.work.OneTimeWorkRequest;
import androidx.work.PeriodicWorkRequest; import androidx.work.PeriodicWorkRequest;
@ -124,14 +123,7 @@ public class NextcloudTalkApplication extends MultiDexApplication implements Lif
initializeWebRtc(); initializeWebRtc();
DisplayUtils.useCompatVectorIfNeeded(); DisplayUtils.useCompatVectorIfNeeded();
buildComponent();
try {
buildComponent();
} catch (final GeneralSecurityException exception) {
if (BuildConfig.DEBUG) {
exception.printStackTrace();
}
}
componentApplication.inject(this); componentApplication.inject(this);
refWatcher = LeakCanary.install(this); refWatcher = LeakCanary.install(this);
@ -144,6 +136,7 @@ public class NextcloudTalkApplication extends MultiDexApplication implements Lif
PeriodicWorkRequest periodicCapabilitiesUpdateWork = new PeriodicWorkRequest.Builder(CapabilitiesWorker.class, PeriodicWorkRequest periodicCapabilitiesUpdateWork = new PeriodicWorkRequest.Builder(CapabilitiesWorker.class,
1, TimeUnit.DAYS).build(); 1, TimeUnit.DAYS).build();
WorkManager.initialize(getApplicationContext(), new Configuration.Builder().build());
WorkManager.getInstance().enqueue(pushRegistrationWork); WorkManager.getInstance().enqueue(pushRegistrationWork);
WorkManager.getInstance().enqueue(accountRemovalWork); WorkManager.getInstance().enqueue(accountRemovalWork);
WorkManager.getInstance().enqueueUniquePeriodicWork("DailyCapabilitiesUpdateWork", WorkManager.getInstance().enqueueUniquePeriodicWork("DailyCapabilitiesUpdateWork",
@ -166,7 +159,7 @@ public class NextcloudTalkApplication extends MultiDexApplication implements Lif
//endregion //endregion
//region Protected methods //region Protected methods
protected void buildComponent() throws GeneralSecurityException { protected void buildComponent() {
componentApplication = DaggerNextcloudTalkApplicationComponent.builder() componentApplication = DaggerNextcloudTalkApplicationComponent.builder()
.busModule(new BusModule()) .busModule(new BusModule())
.contextModule(new ContextModule(getApplicationContext())) .contextModule(new ContextModule(getApplicationContext()))

View File

@ -468,8 +468,8 @@ public class ChatController extends BaseController implements MessagesListAdapte
@Override @Override
public void onDestroy() { public void onDestroy() {
super.onDestroy();
inChat = false; inChat = false;
dispose();
ApplicationWideCurrentRoomHolder.getInstance().clear(); ApplicationWideCurrentRoomHolder.getInstance().clear();
leaveRoom(); leaveRoom();
} }
@ -477,7 +477,7 @@ public class ChatController extends BaseController implements MessagesListAdapte
private void dispose() { private void dispose() {
Disposable disposable; Disposable disposable;
for (int i = 0; i < disposableList.size(); i++) { for (int i = 0; i < disposableList.size(); i++) {
if ((disposable = disposableList.get(i)).isDisposed()) { if (!(disposable = disposableList.get(i)).isDisposed()) {
disposable.dispose(); disposable.dispose();
} }
} }
@ -575,6 +575,7 @@ public class ChatController extends BaseController implements MessagesListAdapte
@Override @Override
public void onNext(GenericOverall genericOverall) { public void onNext(GenericOverall genericOverall) {
dispose();
getRouter().popToRoot(); getRouter().popToRoot();
} }
@ -655,6 +656,10 @@ public class ChatController extends BaseController implements MessagesListAdapte
} }
private void pullChatMessages(int lookIntoFuture) { private void pullChatMessages(int lookIntoFuture) {
if (!inChat) {
return;
}
if (!lookingIntoFuture && lookIntoFuture == 1) { if (!lookingIntoFuture && lookIntoFuture == 1) {
lookingIntoFuture = true; lookingIntoFuture = true;
} }
@ -708,6 +713,7 @@ public class ChatController extends BaseController implements MessagesListAdapte
.subscribeOn(Schedulers.newThread()) .subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread()) .observeOn(AndroidSchedulers.mainThread())
.retry(3, observable -> inChat) .retry(3, observable -> inChat)
.takeWhile(observable -> inChat)
.subscribe(new Observer<Response>() { .subscribe(new Observer<Response>() {
@Override @Override
public void onSubscribe(Disposable d) { public void onSubscribe(Disposable d) {

View File

@ -73,7 +73,6 @@ import net.orange_box.storebox.listeners.OnPreferenceValueChangedListener;
import org.greenrobot.eventbus.EventBus; import org.greenrobot.eventbus.EventBus;
import java.io.IOException; import java.io.IOException;
import java.net.CookieManager;
import java.net.URI; import java.net.URI;
import java.net.URISyntaxException; import java.net.URISyntaxException;
import java.util.ArrayList; import java.util.ArrayList;
@ -167,9 +166,6 @@ public class SettingsController extends BaseController {
@Inject @Inject
UserUtils userUtils; UserUtils userUtils;
@Inject
CookieManager cookieManager;
private UserEntity currentUser; private UserEntity currentUser;
private String credentials; private String credentials;
@ -424,7 +420,6 @@ public class SettingsController extends BaseController {
removeAccountButton.addPreferenceClickListener(view1 -> { removeAccountButton.addPreferenceClickListener(view1 -> {
cookieManager.getCookieStore().removeAll();
boolean otherUserExists = userUtils.scheduleUserForDeletionWithId(currentUser.getId()); boolean otherUserExists = userUtils.scheduleUserForDeletionWithId(currentUser.getId());
OneTimeWorkRequest accountRemovalWork = new OneTimeWorkRequest.Builder(AccountRemovalWorker.class).build(); OneTimeWorkRequest accountRemovalWork = new OneTimeWorkRequest.Builder(AccountRemovalWorker.class).build();

View File

@ -107,12 +107,7 @@ public class SwitchAccountController extends BaseController {
public void onNext(UserEntity userEntity) { public void onNext(UserEntity userEntity) {
userUtils.disableAllUsersWithoutId(userEntity.getId()); userUtils.disableAllUsersWithoutId(userEntity.getId());
if (getActivity() != null) { if (getActivity() != null) {
getActivity().runOnUiThread(new Runnable() { getActivity().runOnUiThread(() -> getRouter().popCurrentController());
@Override
public void run() {
getRouter().popCurrentController();
}
});
} }
} }