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,但我必须马上解决这个问题。具有单态结构。。但我不知道哪一个是正确的