【发布时间】:2012-08-17 00:42:35
【问题描述】:
我是 Android 新手,现在我面临一个奇怪的问题,简而言之,问题是
“屏幕旋转后,接收 TCP 消息然后更改 GUI 的背景颜色无效。”
我要归档的内容:
在安卓设备上运行一个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# 安卓平台:4.0三星S2 开发IDE:Motodev SDK API:Android 3
【问题讨论】:
-
感谢 Jos 和 Steffen BlassFind。我找到了相关主题stackoverflow.com/questions/1111980/…
-
所以我目前的解决方法是对 UI 元素使用静态声明
标签: android user-interface tcp tcpclient