Как можно обойтись без утечки памяти getInstance () - PullRequest
1 голос
/ 28 января 2020

Я использую объект экземпляра stati c для данных, связанных с другим действием в моем приложении. Но это приводит к утечке памяти.

public class ChartActivity extends AppCompatActivity {
       private static ChartActivity instance;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_chart);

        instance = this;

        bla bla bla
   }
    public static ChartActivity getInstance() {
        return instance;
    }

}

Мне нужно вызвать кнопку плавающего действия в другом упражнении. Я не скрываю это, или мне нужно снова обновить просмотрщик в другом фрагменте

ChartActivity.getInstance().fabadd.hide();
ChartActivity.getInstance().fabadd.setOnClickListener(new View.OnClickListener() {
    @SuppressLint("SetTextI18n")
    @Override
    public void onClick(View v) {
        // 
    }
});

ChartActivity.getInstance().recyclerViewAdapter.notifyDataSetChanged();

Как я могу решить эту проблему без утечки памяти? Заранее спасибо!

1 Ответ

0 голосов
/ 31 января 2020

посмотрите, как передавать данные с помощью намерений, это просто, и вам не нужно использовать stati c экземпляров вашей активности.

Пример:

Intent i = new Intent(this,SecondActivity.class);
i.putString("keyData",name); //this keyData will be the key to get the information from activity one to second activity.
startActivity(i);

в вашем второе занятие, которое вы должны проверить *

Intent i = getIntent();
if(i.hasExtra("key") && i.getBooleanExtra("key",false)==true)
{
    fab.setVisibility(View.GONE);
    //all buttons or other views that you need to change visibility you can do it from here
}

вот и все.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...