问题:两个activity之间传递消息,在网上查了一些资料,发现myapp的和广播机制只对一般的控件有效,在对视频方面会产生bug,bug的原因是还未加载完surface就已经开始播放视频,导致程序崩溃。
解决:花了一天半时间研究surface的代码以及网上相关博客,对这方面有了大概的了解,然后自己测试一个demo(上篇),理解了它的基本原理后,才知道如何入手,然后写了如下的代码
FinalPlayGameAct中:
@Override
public void surfaceCreated(SurfaceHolder arg0) {
Log.e("yan", "surfaceCreated" + isFirstEntry);
if (isFirstEntry) {
playIntro();
isFirstEntry = false;
} else {
// 此处为点击礼物赠送礼物后返回调用此方法时的处理
if (mediaPlayer != null) {
SharedPreferences share = getSharedPreferences("gift",
Activity.MODE_WORLD_READABLE);
String str = share.getString("boolean", "0");
if (str.equals("1")) {
Log.e("yan", "礼物");
playGift();
SharedPreferences sharedPreferences = getSharedPreferences(
"gift", Activity.MODE_PRIVATE); // 私有数据
Editor editor = sharedPreferences.edit();// 获取编辑器
editor.putString("boolean", "0");
editor.commit();// 提交修改
} else {
Log.e("yan", "继续");
mediaPlayer.setDisplay(surfaceHolder);
mediaPlayer.start();
}
}
}
}
每次加载这个界面都会调用此方法,故应该在这里面写代码
GiftListAct:
if (cString.equals("1")) {
SharedPreferences sharedPreferences = getSharedPreferences("gift", Activity.MODE_PRIVATE); //私有数据
Editor editor = sharedPreferences.edit();//获取编辑器
editor.putString("boolean", "1");
editor.commit();//提交修改
finish();
}
原理很简单,变相完成了handler的传递。(tm的我为何这么给力)