Galera, peço a ajuda de vocês. Então, o meu problema é o seguinte:
Como liberar recursos ao fechar uma activity no meu app?
Exemplo:
Tela A busca as coordenadas e ao clicar no botão nesta tela, abrirá a tela B que apresentará um mapa com a localização das coordenadas capturadas, percebo que a memoria dobra ao abrir a Tela B e ao fechar a memoria não muda nada.
Isso acontece em outras telas também. Acho que é alguma coisa no onDestroy
que não estou conseguindo tratar.
1 curtida
Faz o seguinte, quando você for fazer um intent pra outra activity, limpa a pilha de activitys, exemplo:
Intent newIntent = new Intent(TelaA.this, TelaB.class);
newIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
newIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(newIntent);
Vai resolver o seu problema.
1 curtida
Mostra o código da sua Tela B.
Leonardo, não deu certo.
Felipe segue a classe todo abaixo. Mas é o seguinte eu apenes dei um exemplo destas duas telas que estou tendo problema. Mais gostaria e entender como liberar recurso ao fechar qualquer tela (desde de uma tela que tenha apena um listview).
public class GpsLocalidadeMapa extends FragmentActivity implements OnMapReadyCallback {
private GoogleMap googleMap;
private GoogleApiClient client;
private Bundle parametro;
private SupportMapFragment mapFragment;
private Button btnTipoMapa;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_localidade_mapa);
btnTipoMapa = (Button) findViewById(R.id.alm_btn_tipomapa);
btnTipoMapa.setText("SATELITE");
Intent it = getIntent();
parametro = it.getExtras();
mapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);
mapFragment.getMapAsync(this);
}
@Override
protected void onDestroy() {
}
@Override
public void onMapReady(final GoogleMap map) {
this.googleMap = map;
configMap(parametro.getDouble("LATITUDE", 0.0), parametro.getDouble("LONGITUDE", 0.0), parametro.getString("CLIENTE"), false);
client = new GoogleApiClient.Builder(this).addApi(AppIndex.API).build();
}
public void onClickSetTipoMapa(View view) {
String textBtn = btnTipoMapa.getText().toString();
if (textBtn.equals("MAPA")) {
btnTipoMapa.setText("SATELITE");
configMap(parametro.getDouble("LATITUDE", 0.0), parametro.getDouble("LONGITUDE", 0.0), parametro.getString("CLIENTE"), false);
} else {
btnTipoMapa.setText("MAPA");
configMap(parametro.getDouble("LATITUDE", 0.0), parametro.getDouble("LONGITUDE", 0.0), parametro.getString("CLIENTE"), true);
}
}
public void configMap(double latidude, double longitude, String cliente, boolean isTipoMapa) {
if (isTipoMapa) {
googleMap.setMapType(GoogleMap.MAP_TYPE_SATELLITE);
} else {
googleMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);
}
LatLng latLng = new LatLng(latidude, longitude);
// .bearing(0) - Rotação ---- .zoom(20) - Zoom ---- .tilt(15) - Grau de Visualização
CameraPosition cameraPosition = new CameraPosition.Builder().target(latLng).zoom(18).tilt(15).build();
CameraUpdate update = CameraUpdateFactory.newCameraPosition(cameraPosition);
googleMap.moveCamera(update);
// MARKERS
customAddMarker(new LatLng(latidude, longitude), "", cliente);
}
public void customAddMarker(LatLng latLng, String title, String snippet) {
MarkerOptions options = new MarkerOptions();
options.position(latLng).title(title).snippet(snippet).draggable(true);
options.icon(BitmapDescriptorFactory.fromResource(R.drawable.localizacao));
Marker marker = googleMap.addMarker(options);
}
}
Obrigado pela atenção.
Leandrooooo
O Android já faz por padrão a liberação dos recursos de uma Activity quando ela é fechada.
O problema é que você sobrescreveu o método onDestroy
e removeu o comportamento padrão. Veja:
@Override
protected void onDestroy() {
}
Caso queira deixar o onDestroy
, ao menos deixe a chamada ao super
:
@Override
protected void onDestroy() {
super.onDestroy();
}