在我的应用程序中,有一个Activity
类和一个帮助器类。活动类可以访问显示分数的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?
}
}
我发现了两种方法,但它们并不是很好。一种方法是将活动实例传递给辅助类。其他方法是声明TextView
静态。但是,两者都容易受到内存泄漏的影响。有没有更好的方法呢?
答案 0 :(得分:1)
您可以使用界面
来实现这一目标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);
}
}
当您从帮助程序类调用updateScore时,它将从活动中调用updateScore并将分数传递给它,您可以更新MainActivity中的TextView。