1.我想实现横屏、竖屏时候显示不同界面,但是翻转屏幕会调用ondestroy和oncreate函数。程序中的数据怎么办?
2.我开发了一个蓝牙通信的程序,在2.3.4的手机上不会阻塞,在4.2.2的手机上会阻塞,这是怎么回事?
代码如下:
private int read(int count,int timeout){
long startTime=System.currentTimeMillis();
long readTime = 0;
int readCount = 0;
int i=1;
int availableCount = 0;
while(readTime < timeout){
try {
i++;
Log.d(TAG, "read available:");
availableCount = mmInStream.available();
Log.d(TAG, "available:"+availableCount);
if(availableCount > 0)//有数据再读 避免阻塞
{
if(availableCount <= count - readCount)
{
readCount += mmInStream.read(buffer, readCount, availableCount);
}
else
{
readCount += mmInStream.read(buffer, readCount, count - readCount);
}
}
Log.d(TAG, "read:"+readCount);
if(readCount >= count)
{
break;
}
readTime = System.currentTimeMillis() - startTime;
try {
sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
} catch (IOException e) {
mHandler.obtainMessage(MainActivity.MESSAGE_READ, -1, -1, buffer).sendToTarget();
connectionLost();
break;
}
}
Log.d(TAG, "get " + readCount+",time "+readTime+",i="+i+"\r\n");
return readCount;
}
比如回复的数据长度是10,count=100;在2.3.4手机上,会一直循环,直到超时;但是4.2.2的手机上,收到10个字节以后就阻塞在mmInStream.available();这了,这从log里面能看出来,知道断开连接才会退出阻塞。这个怎么解决?我不希望一直在这阻塞着
------解决思路----------------------
1.问题一实现起来有多种方式,如果两个act之间切换的话保存数据就需要通过静态变量,intent,DB....保存数据,如果是一个ACT两个布局,那用onSaveInstanceState保存就可以了。当然也可以用到前面的静态DB等方法
2.2.3可以在主线程 中通信,4.2就不能,会不会跟这个有关系?如果不希望阻塞那用线程 读取一下呢?加个超时控制!
------解决思路----------------------
有一个东西叫:
android:configChanges="orientation
------解决思路----------------------
screenSize
------解决思路----------------------
keyboardHidden
------解决思路----------------------
keyboard
------解决思路----------------------
navigation"