Java 如果没有内存泄漏,我该怎么办getInstance()

Java 如果没有内存泄漏,我该怎么办getInstance(),java,android,memory-management,memory-leaks,Java,Android,Memory Management,Memory Leaks,我将静态实例对象用于与应用程序中的另一个活动相关的数据。但这会导致内存泄漏 public class ChartActivity extends AppCompatActivity { private static ChartActivity instance; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceSta

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

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();

如何在没有内存泄漏的情况下解决此问题?提前谢谢

了解如何使用intent传递数据,这很简单,而且不需要使用活动的静态实例

例如:

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"));
} 
编辑

第一项活动

Intent i = new Intent(this,SecondActivity.class);
i.putExtra("key",true);
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
}
第二活动

Intent i = new Intent(this,SecondActivity.class);
i.putExtra("key",true);
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
}

基本上就是这样。

寻找如何使用意图传递数据,这很简单,而且不需要使用活动的静态实例

例如:

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"));
} 
编辑

第一项活动

Intent i = new Intent(this,SecondActivity.class);
i.putExtra("key",true);
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
}
第二活动

Intent i = new Intent(this,SecondActivity.class);
i.putExtra("key",true);
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
}


基本上就是这样。

你能解释一下为什么需要使用这个静态实例吗?你可以在静态块中初始化一个实例在android开发中,即使在java开发中,也非常不鼓励将数据存储为静态对象。我建议通过意图在活动上传递数据。例如,我需要更改此活动中的文本视图。因此,我正在从另一个活动更改其中的文本视图。还有别的办法吗@Esaduzzamann博士该问题已更清楚地更新@你有什么建议吗?你可以解释一下为什么需要使用这个静态实例吗?你可以在静态块中初始化一个实例。在android开发中,即使在java开发中,存储数据作为静态对象也是非常不受欢迎的。我建议通过意图在活动上传递数据。例如,我需要更改此活动中的文本视图。因此,我正在从另一个活动更改其中的文本视图。还有别的办法吗@Esaduzzamann博士该问题已更清楚地更新@你有什么建议吗?我不使用它来传递数据。例如,我需要在其他片段或活动中触发按钮/浮动操作按钮为什么不将变量传递给您的活动/片段,如果它存在,只需执行您需要运行的fab/按钮的逻辑,因为fab在另一个片段中。我必须这么做,否则我就得躲起来。ChartActivity.getInstance().floatingactionbutton.hide();谢谢@DemoDemo,但我必须马上解决这个问题。具有单态结构。。但我不知道哪一个是正确的,我不使用它来传递数据。例如,我需要在其他片段或活动中触发按钮/浮动操作按钮为什么不将变量传递给您的活动/片段,如果它存在,只需执行您需要运行的fab/按钮的逻辑,因为fab在另一个片段中。我必须这么做,否则我就得躲起来。ChartActivity.getInstance().floatingactionbutton.hide();谢谢@DemoDemo,但我必须马上解决这个问题。具有单态结构。。但我不知道哪一个是正确的