Dialog初化始时是通过Context.getSystemServer 来获取 WindowManager,而如果用Application或者Service的Context去获取这个WindowManager服务的话,会得到一个WindowManagerImpl的实例,这个实例里token也是空的。之后在Dialog的show方法中将Dialog的View(PhoneWindow.getDecorView())添加到WindowManager时会给token设置默认值还是null。
如果这个Context是Activity,则直接返回Activity的mWindowManager,这个mWindowManager在Activity的attach方法被创建,Token指向此Activity的Token,mParentWindow为Activity的Window本身。
launchMode为singleTask的时候,通过Intent跳到一个Activity,如果系统已经存在一个实例,系统就会将请求发送到这个实例上,但这个时候----------系统就不会再调用onCreate方法,而是调用onNewIntent方法。
注意:设置了"singleTask"启动模式的Activity在已有的任务中已经存在相应的Activity实例,再启动它时会把这个Activity实例上面的Activity全部结束掉。
图片资源优化之一(采样率inSimpleSize):
final BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds =true;
BitmapFactory.decodeResource(res, resId, options);// 读取图片长款
final int height = options.outHeight;
final int width = options.outWidth;
int inSampleSize = 1;
//判定,当原始图像的高和宽大于所需高度和宽度时
if (height > reqHeight || width > reqWidth) {
final int heightRatio = Math.round((float) height / (float) reqHeight);
final int widthRatio = Math.round((float) width / (float) reqWidth);
//算出长宽比后去比例小的作为inSamplesize,保障最后imageview的dimension比request的大
inSampleSize = heightRatio < widthRatio ? heightRatio : widthRatio;
//计算原始图片总像素
final float totalPixels = width * height;
// Anything more than 2x the requested pixels we'll sample down further
//所需总像素*2,长和宽的根号2倍
final float totalReqPixelsCap = reqWidth * reqHeight * 2;
//如果遇到很长,或者是很宽的图片时,这个算法比较有用
while (totalPixels / (inSampleSize * inSampleSize) > totalReqPixelsCap) {
inSampleSize++;
}
options.inSampleSize=inSampleSize;
options.inJustDecodeBounds = false;
BitmapFactory.decodeResource(res, resId, options);
长连接(SSE):
SSE是HTML5新增的功能,全称为Server-Sent Events。它可以允许服务推送数据到客户端。SSE在本质上就与之前的长轮询、短轮询不同,虽然都是基于http协议的,但是轮询需要客户端先发送请求。而SSE最大的特点就是不需要客户端发送请求,可以实现只要服务器端数据有更新,就可以马上发送到客户端。也就是单通!客户端不能主动发起请求。不适合IM。
WebSocket:
WebSocket是Html5定义的一个新协议,与传统的http协议不同,该协议可以实现服务器与客户端之间全双工通信。简单来说,首先需要在客户端和服务器端建立起一个连接,这部分需要http。连接一旦建立,客户端和服务器端就处于平等的地位,可以相互发送数据,不存在请求和响应的区别。WebSocket的优点是实现了双向通信,缺点是服务器端的逻辑复杂。适合IM。