mirror of
https://github.com/commons-app/apps-android-commons.git
synced 2025-10-27 12:53:55 +01:00
Add lifecyle codes to prevent leaks
This commit is contained in:
parent
1677a4bd52
commit
230d62dd54
2 changed files with 54 additions and 27 deletions
|
|
@ -25,6 +25,7 @@ import android.widget.Toast;
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
import androidx.constraintlayout.widget.ConstraintLayout;
|
import androidx.constraintlayout.widget.ConstraintLayout;
|
||||||
|
import androidx.fragment.app.FragmentManager;
|
||||||
import androidx.fragment.app.FragmentTransaction;
|
import androidx.fragment.app.FragmentTransaction;
|
||||||
|
|
||||||
import com.google.android.material.bottomsheet.BottomSheetBehavior;
|
import com.google.android.material.bottomsheet.BottomSheetBehavior;
|
||||||
|
|
@ -197,7 +198,7 @@ public class NearbyTestLayersFragment extends CommonsDaggerSupportFragment
|
||||||
private final double CAMERA_TARGET_SHIFT_FACTOR_PORTRAIT = 0.06;
|
private final double CAMERA_TARGET_SHIFT_FACTOR_PORTRAIT = 0.06;
|
||||||
private final double CAMERA_TARGET_SHIFT_FACTOR_LANDSCAPE = 0.04;
|
private final double CAMERA_TARGET_SHIFT_FACTOR_LANDSCAPE = 0.04;
|
||||||
|
|
||||||
SupportMapFragment mapFragment;
|
SupportMapFragment nearbyMapFragment;
|
||||||
|
|
||||||
private fr.free.nrw.commons.nearby.NearbyListFragment nearbyListFragment;
|
private fr.free.nrw.commons.nearby.NearbyListFragment nearbyListFragment;
|
||||||
private static final String TAG_RETAINED_MAP_FRAGMENT = com.mapbox.mapboxsdk.maps.SupportMapFragment.class.getSimpleName();
|
private static final String TAG_RETAINED_MAP_FRAGMENT = com.mapbox.mapboxsdk.maps.SupportMapFragment.class.getSimpleName();
|
||||||
|
|
@ -223,7 +224,7 @@ public class NearbyTestLayersFragment extends CommonsDaggerSupportFragment
|
||||||
@Override
|
@Override
|
||||||
public void onResume() {
|
public void onResume() {
|
||||||
super.onResume();
|
super.onResume();
|
||||||
mapFragment = getMapFragment();
|
nearbyMapFragment = getNearbyMapFragment();
|
||||||
nearbyListFragment = getListFragment();
|
nearbyListFragment = getListFragment();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -330,7 +331,7 @@ public class NearbyTestLayersFragment extends CommonsDaggerSupportFragment
|
||||||
/**
|
/**
|
||||||
* Returns the map fragment added to child fragment manager previously, if exists.
|
* Returns the map fragment added to child fragment manager previously, if exists.
|
||||||
*/
|
*/
|
||||||
private SupportMapFragment getMapFragment() {
|
private SupportMapFragment getNearbyMapFragment() {
|
||||||
SupportMapFragment existingFragment = (SupportMapFragment) getChildFragmentManager()
|
SupportMapFragment existingFragment = (SupportMapFragment) getChildFragmentManager()
|
||||||
.findFragmentByTag(TAG_RETAINED_MAP_FRAGMENT);
|
.findFragmentByTag(TAG_RETAINED_MAP_FRAGMENT);
|
||||||
if (existingFragment == null) {
|
if (existingFragment == null) {
|
||||||
|
|
@ -371,7 +372,7 @@ public class NearbyTestLayersFragment extends CommonsDaggerSupportFragment
|
||||||
transaction.add(R.id.container, mapFragment, TAG_RETAINED_MAP_FRAGMENT);
|
transaction.add(R.id.container, mapFragment, TAG_RETAINED_MAP_FRAGMENT);
|
||||||
transaction.commit();
|
transaction.commit();
|
||||||
/*} else {
|
/*} else {
|
||||||
mapFragment = (SupportMapFragment) getChildFragmentManager().findFragmentByTag(TAG_RETAINED_MAP_FRAGMENT);
|
nearbyMapFragment = (SupportMapFragment) getChildFragmentManager().findFragmentByTag(TAG_RETAINED_MAP_FRAGMENT);
|
||||||
}*/
|
}*/
|
||||||
|
|
||||||
mapFragment.getMapAsync(new OnMapReadyCallback() {
|
mapFragment.getMapAsync(new OnMapReadyCallback() {
|
||||||
|
|
@ -411,6 +412,23 @@ public class NearbyTestLayersFragment extends CommonsDaggerSupportFragment
|
||||||
return nearbyListFragment;
|
return nearbyListFragment;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void removeListFragment() {
|
||||||
|
if (nearbyListFragment != null) {
|
||||||
|
FragmentManager fm = getChildFragmentManager();
|
||||||
|
fm.beginTransaction().remove(nearbyListFragment).commit();
|
||||||
|
nearbyListFragment = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void removeMapFragment() {
|
||||||
|
if (nearbyMapFragment != null) {
|
||||||
|
FragmentManager fm = getChildFragmentManager();
|
||||||
|
fm.beginTransaction().remove(nearbyMapFragment).commit();
|
||||||
|
nearbyMapFragment = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Updates nearby list for custom location, will be used with search this area method. When you
|
* Updates nearby list for custom location, will be used with search this area method. When you
|
||||||
* want to search for a place where you are not at.
|
* want to search for a place where you are not at.
|
||||||
|
|
@ -429,7 +447,7 @@ public class NearbyTestLayersFragment extends CommonsDaggerSupportFragment
|
||||||
|
|
||||||
Log.d("denemeTest","this:"+this+", location manager is:"+locationManager);
|
Log.d("denemeTest","this:"+this+", location manager is:"+locationManager);
|
||||||
nearbyParentFragmentPresenter = new NearbyParentFragmentPresenter
|
nearbyParentFragmentPresenter = new NearbyParentFragmentPresenter
|
||||||
(nearbyListFragment,this, mapFragment, locationManager);
|
(nearbyListFragment,this, nearbyMapFragment, locationManager);
|
||||||
Timber.d("Child fragment attached");
|
Timber.d("Child fragment attached");
|
||||||
nearbyParentFragmentPresenter.nearbyFragmentsAreReady();
|
nearbyParentFragmentPresenter.nearbyFragmentsAreReady();
|
||||||
initViews();
|
initViews();
|
||||||
|
|
@ -440,7 +458,7 @@ public class NearbyTestLayersFragment extends CommonsDaggerSupportFragment
|
||||||
@Override
|
@Override
|
||||||
public void addOnCameraMoveListener(MapboxMap.OnCameraMoveListener onCameraMoveListener) {
|
public void addOnCameraMoveListener(MapboxMap.OnCameraMoveListener onCameraMoveListener) {
|
||||||
Log.d("denemeTestt","on camera move listener is set");
|
Log.d("denemeTestt","on camera move listener is set");
|
||||||
mapFragment.getMapboxMap().addOnCameraMoveListener(onCameraMoveListener);
|
nearbyMapFragment.getMapboxMap().addOnCameraMoveListener(onCameraMoveListener);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -765,7 +783,7 @@ public class NearbyTestLayersFragment extends CommonsDaggerSupportFragment
|
||||||
: new LatLng(curLatLng.getLatitude(), curLatLng.getLongitude(), 0)) // Sets the new camera position
|
: new LatLng(curLatLng.getLatitude(), curLatLng.getLongitude(), 0)) // Sets the new camera position
|
||||||
.zoom(isBottomListSheetExpanded ?
|
.zoom(isBottomListSheetExpanded ?
|
||||||
ZOOM_LEVEL
|
ZOOM_LEVEL
|
||||||
:mapFragment.getMapboxMap().getCameraPosition().zoom) // Same zoom level
|
: nearbyMapFragment.getMapboxMap().getCameraPosition().zoom) // Same zoom level
|
||||||
.build();
|
.build();
|
||||||
}else {
|
}else {
|
||||||
position = new CameraPosition.Builder()
|
position = new CameraPosition.Builder()
|
||||||
|
|
@ -775,11 +793,11 @@ public class NearbyTestLayersFragment extends CommonsDaggerSupportFragment
|
||||||
: new LatLng(curLatLng.getLatitude(), curLatLng.getLongitude(), 0)) // Sets the new camera position
|
: new LatLng(curLatLng.getLatitude(), curLatLng.getLongitude(), 0)) // Sets the new camera position
|
||||||
.zoom(isBottomListSheetExpanded ?
|
.zoom(isBottomListSheetExpanded ?
|
||||||
ZOOM_LEVEL
|
ZOOM_LEVEL
|
||||||
:mapFragment.getMapboxMap().getCameraPosition().zoom) // Same zoom level
|
: nearbyMapFragment.getMapboxMap().getCameraPosition().zoom) // Same zoom level
|
||||||
.build();
|
.build();
|
||||||
}
|
}
|
||||||
|
|
||||||
mapFragment.getMapboxMap().animateCamera(CameraUpdateFactory.newCameraPosition(position), 1000);
|
nearbyMapFragment.getMapboxMap().animateCamera(CameraUpdateFactory.newCameraPosition(position), 1000);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -820,7 +838,7 @@ public class NearbyTestLayersFragment extends CommonsDaggerSupportFragment
|
||||||
this.getView().requestFocus();
|
this.getView().requestFocus();
|
||||||
break;
|
break;
|
||||||
case (BottomSheetBehavior.STATE_HIDDEN):
|
case (BottomSheetBehavior.STATE_HIDDEN):
|
||||||
mapFragment.getMapboxMap().deselectMarkers();
|
nearbyMapFragment.getMapboxMap().deselectMarkers();
|
||||||
transparentView.setClickable(false);
|
transparentView.setClickable(false);
|
||||||
transparentView.setAlpha(0);
|
transparentView.setAlpha(0);
|
||||||
closeFABs(isFabOpen);
|
closeFABs(isFabOpen);
|
||||||
|
|
@ -844,7 +862,7 @@ public class NearbyTestLayersFragment extends CommonsDaggerSupportFragment
|
||||||
bookmarkButton.setOnClickListener(view -> {
|
bookmarkButton.setOnClickListener(view -> {
|
||||||
boolean isBookmarked = bookmarkLocationDao.updateBookmarkLocation(this.selectedPlace);
|
boolean isBookmarked = bookmarkLocationDao.updateBookmarkLocation(this.selectedPlace);
|
||||||
updateBookmarkButtonImage(this.selectedPlace);
|
updateBookmarkButtonImage(this.selectedPlace);
|
||||||
mapFragment.updateMarker(isBookmarked, this.selectedPlace, locationManager.getLastLocation());
|
nearbyMapFragment.updateMarker(isBookmarked, this.selectedPlace, locationManager.getLastLocation());
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -907,10 +925,34 @@ public class NearbyTestLayersFragment extends CommonsDaggerSupportFragment
|
||||||
wikidataEditListener.setAuthenticationStateListener(null);
|
wikidataEditListener.setAuthenticationStateListener(null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onPause() {
|
||||||
|
super.onPause();
|
||||||
|
// this means that this activity will not be recreated now, user is leaving it
|
||||||
|
// or the activity is otherwise finishing
|
||||||
|
if(getActivity().isFinishing()) {
|
||||||
|
// we will not need this fragment anymore, this may also be a good place to signal
|
||||||
|
// to the retained fragment object to perform its own cleanup.
|
||||||
|
removeMapFragment();
|
||||||
|
removeListFragment();
|
||||||
|
|
||||||
|
}
|
||||||
|
if (broadcastReceiver != null) {
|
||||||
|
getActivity().unregisterReceiver(broadcastReceiver);
|
||||||
|
broadcastReceiver = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (locationManager != null && nearbyParentFragmentPresenter != null) {
|
||||||
|
locationManager.removeLocationListener(nearbyParentFragmentPresenter);
|
||||||
|
locationManager.unregisterLocationManager();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onWikidataEditSuccessful() {
|
public void onWikidataEditSuccessful() {
|
||||||
if (mapFragment != null && nearbyParentFragmentPresenter != null && locationManager != null) {
|
if (nearbyMapFragment != null && nearbyParentFragmentPresenter != null && locationManager != null) {
|
||||||
nearbyParentFragmentPresenter.updateMapAndList(MAP_UPDATED, locationManager.getLastLocation());
|
nearbyParentFragmentPresenter.updateMapAndList(MAP_UPDATED, locationManager.getLastLocation());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -176,21 +176,6 @@ public abstract class NavigationBaseActivity extends BaseActivity
|
||||||
drawerLayout.closeDrawer(navigationView);
|
drawerLayout.closeDrawer(navigationView);
|
||||||
WelcomeActivity.startYourself(this);
|
WelcomeActivity.startYourself(this);
|
||||||
return true;
|
return true;
|
||||||
case R.id.action_nearby_test_activity:
|
|
||||||
drawerLayout.closeDrawer(navigationView);
|
|
||||||
startActivityWithFlags(this, MainActivity.class, Intent.FLAG_ACTIVITY_REORDER_TO_FRONT,
|
|
||||||
Intent.FLAG_ACTIVITY_SINGLE_TOP);
|
|
||||||
return true;
|
|
||||||
case R.id.action_nearby_test_fragment:
|
|
||||||
drawerLayout.closeDrawer(navigationView);
|
|
||||||
startActivityWithFlags(this, MainActivity.class, Intent.FLAG_ACTIVITY_REORDER_TO_FRONT,
|
|
||||||
Intent.FLAG_ACTIVITY_SINGLE_TOP);
|
|
||||||
return true;
|
|
||||||
case R.id.action_nearby_test_fragment_layers:
|
|
||||||
drawerLayout.closeDrawer(navigationView);
|
|
||||||
startActivityWithFlags(this, MainActivity.class, Intent.FLAG_ACTIVITY_REORDER_TO_FRONT,
|
|
||||||
Intent.FLAG_ACTIVITY_SINGLE_TOP);
|
|
||||||
return true;
|
|
||||||
case R.id.action_feedback:
|
case R.id.action_feedback:
|
||||||
drawerLayout.closeDrawer(navigationView);
|
drawerLayout.closeDrawer(navigationView);
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue