我该如何避免内存泄漏getInstance()

问题描述 投票:0回答:1

我正在将静态实例对象用于与应用程序中另一活动相关的数据。但这会导致内存泄漏。

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;
    }

}

我需要在另一个活动中调用浮动操作按钮,否则我不会将其隐藏。或者我需要再次更新另一个片段中的recyclerview

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

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

如何解决此问题而又不会导致内存泄漏?预先感谢!

java android memory-management memory-leaks
1个回答
0
投票

寻找使用意图来传递数据的方法,它很简单,并且您不需要使用活动的静态实例。

示例:

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("keyData"))
{
    textview.setText(i.getExtra("keyData"));
} 
© www.soinside.com 2019 - 2024. All rights reserved.