android中的回调举例:在surfaceview中结束宿主activity

背景

SurfaceView是游戏开发中经常使用到的View,能够实时的更新UI界面,实现游戏逻辑。在这里的讨论中,我设定了一个GameActivity , 在这个activity的布局中,放置了一个全屏的GameSurfaceView。GameActivity虽然是游戏的主体,但游戏的逻辑和显示都是由GameSurfaceView负责。游戏开始后,GameSurfaceView在新开的线程中运行,并即时的更新游戏界面。

当游戏逻辑结束时,需要结束掉activity,以使得activity stack顺序清晰。特别是在2.2系统下,不能一次性关闭app,只能每次都关闭掉各个acticity。


实现

如何在GameSurfaceView中结束掉这个activity呢?

增加回调接口,在GameSurfaceView中实现回调!

关于回调的介绍: callback

1,设定一个回调接口

public interface OnEndOfGameInterface {
	public void onEndOfGame();
	
}

在GameActivity中实现这个接口。

public class GameActivity extends Activity implements OnEndOfGameInterface   {
//....
@Override
	public void onEndOfGame() {		
		this.finish();
	}
}

在GameSurfaceView中定义回调类型的成员。 并定义一个public method 用来设置回调成员为GameActivity。

protected OnEndOfGameInterface mOnEndOfGame ; //callback interface

public void setOnEndOfGame(OnEndOfGameInterface xOnEndOfGame){
		mOnEndOfGame = xOnEndOfGame;
	}
	

GameActivity中,开启GameSurfaceView的同时,必须调用setOnEndOfGame方法,设定好回调。

mGameSurfaceView = (ReverseGameSurfaceView) findViewById(R.id.reverse_game_surface_view);
			mGameSurfaceView.setOnEndOfGame(this);  //传入this,设定自己为回调目标
			mGameSurfaceView.setMode(GameBasicSurfaceView.RUNNING);

如此,当GameSurfaceView结束时,就可以调用onEndOfGame方法,实现回调了!



  • 6
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值