我今天调试的整个过程

1,安卓发现连不上本地的tomcat
2,使用浏览器直接尝试,发现可以连上
3,怀疑是安卓APP和浏览器访问有差异,后上网搜索不到APP,只有浏览器尝试
      再不就是改IP,我应该改的都改了,还是不行
4,反思两种访问应该都是一样的,都是一种url请求的封装,一个是手动封装,一个是浏览器给你封装了
5,既然不是这个问题,那是什么问题呢 ,不知道
6,然后开始百度,百度一下,没用,没有用结果
7,然后google,有有建议新启一个线程或者开启一项服务,寻思还是新启动线程简单
8,于是着手写,但是写的过程中忘记局部变量如果在内部类对象方法中用到需要满足什么关系,同时final修饰的局部变量(引用或基本类型)是否可变,于是就网上搜了一下,都说的不甚清楚。
9,于是决定自己写Demo
10,写的时候自己又发现了一个问题,一直和预想的结果不一致,于是一直单步调试
11,用step over到每一步也看不出是什么具体原因导致的输出,好像输出是凭空出来的,
      突然想到一种情况,我的eclipse现在开着两个调试项目,会不会有影响,于是立马把另一个web服务关掉
      发现输出正常了点,没有定义之外的输出,但是输出顺序不对,瞬间,我就想到了多线程并发的情况,于是        用了一个join()函数等待list添加结束,然后就一起正常了。
12,然后就开始写我的android联网测试案例了。
 
注意点
1,android的main线程里面不能连接网络
2,有问题google,有问题自己动手
3,有问题单步调试一步步看
4,eclipse不能同时启动几个调试
5,冷静思考,查资料,大胆猜想。
 
以下是测试源码

package test.OO.innerClass.innerClassObject;

import java.util.ArrayList;
import java.util.List;

public class testLocalVariableInFunction {

public static void main(String [] args){

final List<String> list = new ArrayList<String>();
list.add("kitty");
System.out.println("1,"+list);
Thread t1 = new Thread(new Runnable(){
public void run(){
System.out.println("2,"+list);
list.add("raoxiang");
System.out.println("3,"+list);
list.add("yan");
System.out.println("4,"+list);

}
});
// Thread t1 = new Thread(){
// public void run(){
// System.out.println("2,"+list);
// list.add("raoxiang");
// System.out.println("3,"+list);
// list.add("yan");
// System.out.println("4,"+list);
//
// }
// };

t1.start();
System.out.println("5,************************end1");
try {
t1.join();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("6,************************end2");
System.out.println("7"+list);
}
}

t1.start();
System.out.println("5,************************end1");
try {
t1.join();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("6,************************end2");
System.out.println("7"+list);
}
}

 

 以下是解决问题后的网络连接部分的android代码,目的是从服务器取json转换为list返回,其中 NewsService.getLastNews()会启用网络连接,具体实现就不贴了

private List<HashMap<String,Object>> getNewes(){
final List<HashMap<String,Object>> data = new ArrayList<HashMap<String,Object>>();
Thread t1 = new Thread(){
@Override
public void run() {
try {
List<News> newes = NewsService.getLastNews();

for(News news : newes ){
HashMap<String,Object> item = new HashMap<String,Object>();
item.put("title",news.getTitle());
item.put("timelength",news.getTimelength());
data.add(item);
}
} catch (Exception e) {
e.printStackTrace();
}
}
};
t1.start();
try {
t1.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
return data ;

}

android测试本地服务调试流程的更多相关文章

  1. jmeter测试本地myeclips调试状态下的tomcat程序死锁

    在myeclipse调试状态下的tomcat程序,用jmeter测试,居然发生死锁,调试两天无果,直接运行tomcat而不通过myeclipse,无死锁,真是又好气又好笑..

  2. LoadRunner+Android模所器实现抓包并调试本地服务端

    步骤就是 1:新建LR脚本.协议选择Mobile Application - HTTP/HTML 2:在record里选择第三个:Record Emulator........ 3:  选择下一步后, ...

  3. Android Service学习之本地服务

    Service是在一段不定的时间运行在后台,不和用户交互应用组件.每个Service必须在manifest中 通过来声明.可以通过contect.startservice和contect.bindse ...

  4. APP本地服务安全测试

    一.安全测试基本分类: 1.系统安全 系统加固 安全加固:比如linux中关闭telnet端口,修改ssh端口 检测一些不必要的服务(需要卸载一个ping)--保证系统的最小集 app安全加固:加一层 ...

  5. 如何将生产环境的服务Docker镜像拉取到本地进行调试

    背景 很多时候我们在将开发环境的代码推送到GitLab上面以后,我们在测试的时候发现了问题后无法通过现有的日志输出级别来定位问题,比如我们需要看EFCore生成的SQL语句,在生产环境我们是不可能输出 ...

  6. 深入Android媒体存储服务(二):磁盘扫描流程

    简介: 本文是<深入Android媒体存储服务>系列第二篇,简要介绍媒体存储服务扫描文件的流程.文中介绍的是 Android 4.2. Android 有一套媒体存储服务,进程名是 and ...

  7. Slickflow.NET 开源工作流引擎高级开发(二) -- 流程快速测试增值服务工具介绍

    前言:流程是由若干个任务节点组成,流转过程就是从一个节点转移到下一个节点,通常需要不断切换用户身份来完成流程的测试,这样使得测试效率比较低下,本文从实战出发,介绍常见的两种快速测试方法,用于提升流程测 ...

  8. Android 输入管理服务-输入事件到达之后的处理流程

    接上一篇博客"Android 输入管理服务启动过程的流程".这两天分析了Android 输入管理服务接收到输入事件之后的处理流程,详细流程例如以下面两图所看到的: 接下图

  9. Android本地服务

    一.服务生命周期总结 (一).单独开启服务,并没有绑定服务Activity中调用startService(),服务的lifecycle:onCreate()→onStartCommand()→onSt ...

随机推荐

  1. lintcode :二叉树的最大深度

    题目: 二叉树的最大深度 给定一个二叉树,找出其最大深度. 二叉树的深度为根节点到最远叶子节点的距离. 样例 给出一棵如下的二叉树: 1 / \ 2 3 / \ 4 5 这个二叉树的最大深度为3. 解 ...

  2. hdu 1005 java(System.out.println();与System.out.println(“\n”);)

    //package Main; import java.util.Scanner; public class Main { static int [][] mat=new int [2][2]; st ...

  3. C语言的字符测试函数

    C语言的字符测试函数 isalnum, isalpha, isdigit, isxdigit, isblank, isspace, isascii, iscntrl, ispunct, isgraph ...

  4. Arc Engiene读取文档的属性

    设计界面 创建类 代码如下 using System; using System.Collections.Generic; using System.Linq; using System.Text; ...

  5. Java中中文拼音的排序问题

    最近做一个手机数据同步的应用开发,需要提供地址簿信息按照姓名的拼音次序进行排序.但仔细考察Java提供的Collator之后,发现其中文拼音排序存在严重的问题.Java提供Collator来支持不同语 ...

  6. [原创]使用命令行工具提升cocos2d-x开发效率(一)之TexturePacker篇

    TexturePacker是一个常用的制作sprite sheet的工具,它提供了很多实用的功能. 一般我们制作sprite sheet都是使用他的gui版本,纯手工操作,就像下面这张图示的一样. 刚 ...

  7. 关于java -version版本问题

    因为安装了Oracle,而Oracel会自带JDK,安装完成后,会自动把自己的JDK设置在最前面(path变量里). 这就是为什么结果与事实不相同的原因. 解决方法: 进入系统环境变量,找到path变 ...

  8. 【原创】MySql 数据库导入导出(备份)

    啥不说了,两周前刚刚做过mysql导入导出的结果现在又忘了.. 更可悲的是竟然同样的三篇blog,现在看起来还是如当初一样费劲,里面的内容..所以自己写个记录一下 环境:*nix 权限:有相关表的写读 ...

  9. PHP开发者常犯的10个MySQL错误

    原文出处: kaiyuanba   欢迎分享原创到伯乐头条 数据库是WEB大多数应用开发的基础.如果你是用PHP,那么大多数据库用的是MYSQL也是LAMP架构的重要部分. PHP看起来很简单,一个初 ...

  10. IIS下PHP的三种配置方式比较

    在Windows IIS 6.0下配置PHP,通常有CGI.ISAPI和FastCGI三种配置方式,这三种模式都可以在IIS 6.0下成功运行,下面我就讲一下这三种方式配置的区别和性能上的差异. 1. ...