我是 Android 新手,现在我面临一个奇怪的问题,简而言之,问题是
“一旦屏幕旋转,接收 TCP 消息然后更改 GUI 的背景颜色将无效。”
我要归档的内容:
在Android设备上运行一个APP,通过TCP连接到PC。PC 可以向 APP 发送一个字符串,然后 APP 会根据收到的字符串做一些事情。在这种情况下,通过 TCP 将字符串“将背景颜色更改为红色(手机振动)/黑色”发送到 APP,因此 Android 用户将看到振动的致盲效果。
问题是什么:
我可以归档我想要的。但是一旦屏幕旋转,颜色就无法改变,只剩下震动。
我试过的:
我在APP上放了一个按钮,它将手动触发颜色变化事件(带振动)。即使我旋转屏幕,它也能正常工作。
进一步测试表明,TCP读取触发的改变背景颜色和动画等UI操作消失了,但铃声和振动保持不变。
我将视频上传到 Youtube http://youtu.be/n0gxXzzf-bo
下面是java代码,按钮和TCP调用相同的方法:ChangeColor()
public void ChangeColor(){
Thread t= new Thread(new ChangeColorTest());
t.start();
}
public class ChangeColorTest implements Runnable{
public void run() {
try {
for(int i=0;i<3;i++){
mBlinkHandler.sendEmptyMessageDelayed(1, 0);
Thread.sleep(300);
mBlinkHandler.sendEmptyMessageDelayed(2, 0);
Thread.sleep(300);
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
Handler mBlinkHandler = new Handler(){
@Override
public void handleMessage(Message msg){
super.handleMessage(msg);
// mScreen = (LinearLayout)findViewById(R.id.mylinerlayout);
if(msg.what==1){
mScreen.setBackgroundColor(Color.RED);
Vibratoration();
}else if(msg.what==2){
mScreen.setBackgroundColor(Color.BLACK);
}
}
};
我想知道什么?
如果有人可以找到解决方案,将不胜感激。
我的平台是什么? 服务器 PC:Win7 64bits VS2010 C# Android 平台:4.0 Samsung S2 开发 IDE:Motodev SDK API:Android 3