在开发android网络程序的时候遇到一个bug,非常简单的一个apk,调用了socket与ServerSocket的应用,在打印bug的时候发现是android.os.networkonmainthread,这个错误主要是因为考虑到连接网络时可能造成整个程序的阻塞,解决这个问题的方法很简单,主要有两种方法,一是采用一种strictmode,这种方法我在某个示例程序里看到过,当时也没有细看,现在想到这个东西,
创新互联专业为企业提供华州网站建设、华州做网站、华州网站设计、华州网站制作等企业网站建设、网页设计与制作、华州企业网站模板建站服务,10年华州做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
.detectDiskReads()
.detectDiskWrites()
.detectNetwork() // or .detectAll() for all detectable problems
.penaltyLog()
.build());
//设置虚拟机的策略
StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
.detectLeakedSqlLiteObjects()
//.detectLeakedClosableObjects()
.penaltyLog()
.penaltyDeath()
.build());
其实当时那个简单的程序在服务器没有开的时候点击登录会造成假死,也就是说整个程序阻塞在那里,我们采用这个strictmode,不过是告诉它我们知道这个情况会发生,而且我们不在意,但是这种方法显然是不可行的,在网络开发中多线程的手段是必不可少的,所以采用多线程才是解决这个问题的方法。
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。