Java 从类调用活动
在我的应用程序中,有一个Java 从类调用活动,java,android,memory-leaks,Java,Android,Memory Leaks,在我的应用程序中,有一个活动类和一个助手类。活动类可以访问显示分数的TextView。助手类需要定期更新活动类中的分数 public class MainActivity extends Activity { TextView textView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContent
活动
类和一个助手类。活动类可以访问显示分数的TextView
。助手类需要定期更新活动类中的分数
public class MainActivity extends Activity
{
TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_menu);
textView = (TextView) findViewById(R.id.textView);
Helper helper = new Helper();
}
void updateScore(int score)
{
textView.setText(score + "");
}
/* ... */
}
public class Helper
{
int score = 0;
void updateScore()
{
// what to do here?
}
}
我找到了两种方法,但都不是很好。一种方法是将活动实例传递给helper类。另一种方法是声明
TextView
静态。但是,两者都容易发生内存泄漏。有更好的方法吗?您可以通过使用接口来实现这一点
public class MainActivity extends Activity implements MainActivity.Callback {
TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_menu);
textView = (TextView) findViewById(R.id.textView);
Helper helper = new Helper(this);
}
@Override
void updateScore(int score) {
textView.setText(score + "");
}
interface Callback {
void updateScore(int score);
}
/* ... */
}
public class Helper {
int score = 0;
Callback callback;
public Helper(Callback callback){
this.callback = callback;
}
void updateScore() {
callback.updateScore(score);
}
}
当您从helper类调用updateScore时,它将从activity调用updateScore并将分数传递给它,您可以在MainActivity内部更新TextView。如果您正在不断地将分数更新到activity,则会出现回调(接口)更好的是,它还可以解决您的上下文问题。您可以在此处使用数据绑定来直接在视图上反映您的模型属性。你可以跟我说:谢谢。我来看看。