`
TenAclock
  • 浏览: 9664 次
  • 性别: Icon_minigender_1
  • 来自: 山东
社区版块
存档分类
最新评论

工作的第一个任务

阅读更多

工作三天了,boss终于给我个任务让我做了,是我不是很擅长的android方面的一个bug修改。

话说工作第三天:

boss:客户说“这个显示框太难看了!”,你们要给他改好看一些。

缪:恩,好的。

。。。

我是个新人,当然轮不到我做什么客户必须要求做的了,可是他们都太忙了,发哥说,××,你也做过android开发,这个事儿,小缪太忙了,你看看能不能做出来!(敢不答应?敢说不好?)我说好,我尽快解决问题。

话了半个上午的哦时间终于把android开发平台搭建好,一看具体的问题,我离歌擦类!!!这不是传说中的anr么?要我改他的显示?!

Google是最好的老师,我不会,就虚心的想Google求教,好话说了一大堆,可是还不告诉我怎么办!![img]/images/smiles/icon_eek.gif" alt="[/img]

只会是不行的,还得解决问题,向一个android的茂才公求援,茂才公居然也不知道[img]/images/smiles/icon_surprised.gif" alt="[/img][img]/images/smiles/icon_confused.gif" alt="[/img].

只会更是不行的,还得解决问题啊!

根据对对象的理解:创建-->初始化---->使用 三个过程的理解,要是能够找到ANR警告框的这三个过程,然后修改一下显示,不就OK?[img]/images/smiles/icon_biggrin.gif" alt="[/img],找了好久终于还是没有找到![img]/images/smiles/icon_mad.gif" alt="[/img] 找不到,不能改!

既然不能改,那就不让你出来丢人现眼了。

于是,目标就转到代码优化上,根据茂才公的提示,弄了几个线程,居然还是频频出来献丑!!

那就看日志文件吧,看到头大然后又头小之后,发现是网络连接Timeout导致的anr,那就追踪吧,看到一个网络连接测试是否通畅的代码:

public static int checkNet(Context context) {   
		  
        
        ConnectivityManager connectionManager = (ConnectivityManager) context   
                .getSystemService("connectivity");   
  
        NetworkInfo networkInfo = connectionManager.getActiveNetworkInfo();   
  
        if(networkInfo != null){   
        if (networkInfo.getType() == ConnectivityManager.TYPE_WIFI) {
            return 1;    //返回1是 WIFI网络   
        } else if (networkInfo.getType() == ConnectivityManager.TYPE_MOBILE) {
            return 2;    //返回 2是移动互联网()   
        } else {   
               
            return 3;    //返回3是 未知网络   
        }   
        }   
        else{   
            return 0;   
        }   
    }  



看着,也没有问题啊,然后

仔细的看看,想,要是不能上互联网就不能连接这个程序了?开门了,还是比较眷顾努力工作的同学的。

发现问题之后就想怎么来更有效的来验证网络是否通畅,android自带的方法我竟然不知道,就用我知道的socket来解决问题,

 

/**
	 * 检查是否能够连接到特定的主机
	 * @param hostName 主机的 ip
	 * @param port 主机的 端口
	 * @return 是否能够连接成功
	 * 因为不知道timeout的时间设置为多少合适,这里就自作主张了
	 */
	public static boolean canConnection(String hostName,int port){
		boolean connect =false;
		Socket socket =  new Socket();
		try {
			SocketAddress endpoint = new InetSocketAddress(hostName, port) ;
			//这里可以设置检验的时间
			int timeout = 100;//这个是自定义的
			socket.connect(endpoint, timeout);
			
			connect = socket.isConnected();
		} catch (Exception e) {
			connect = false;
			//System.out.println("connection ioe");
			
		}finally{
			socket = null;
			return connect;
		}
	}

  到这里,anr终于被我管在家里了,不出来污染大家的美好环境里!

就是不知道我这样做是不符合boss的要求?没有用到美工,担心中。。。

0
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics