我今天调试的整个过程

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. *[codility]Fish

    https://codility.com/demo/take-sample-test/fish 一开始习惯性使用单调栈,后来发现一个普通栈就可以了. #include <stack> us ...

  2. 2014--9=17 软工二班 MyEclipse blue==2

    关于Java中的getInetAddress方法 联网的话是一个分配的地址,不联网的话是本地localhost package cn.rwkj.test; import java.io.IOExcep ...

  3. 输出进程相关联的环境变量信息(使用GetEnvironmentStrings取得信息,然后使用StringCchCopyN和StringCchPrintf保证字符串不会越界)

    void DumpEnvironmentStrings() { #define MAX_ENVIRONMENT_NAME_LENGTH     (128) #define MAX_ENVIRONMEN ...

  4. Jdk命令之jps

    jps -- Java Virtual Machine Process Status Tool jps命令类似于Linux下的ps命令,可以列出本机所有正在运行的java进程.

  5. 机器学习 —— log-linear 模型

    昨天刚刚解决了 logistic regression 之后今天又来了个有趣的家伙. logistic regression 很强大,但是也有它的弱点.它最大的弱点就是只能告诉你是或者不是,而无法告诉 ...

  6. UPC 2224 / “浪潮杯”山东省第四届ACM大学生程序设计竞赛 1008 Boring Counting 主席树

    Problem H:Boring Counting Time Limit : 6000/3000ms (Java/Other)   Memory Limit : 65535/32768K (Java/ ...

  7. Lucas定理学习小记

    (1)Lucas定理:p为素数,则有: (2)证明: n=(ak...a2,a1,a0)p = (ak...a2,a1)p*p + a0 =  [n/p]*p+a0,m=[m/p]*p+b0其次,我们 ...

  8. python判断文件目录是否存在

    import os os.path.isfile('test.txt')  # 如果不存在就返回False os.path.exists(directory)  # 如果目录不存在就返回False o ...

  9. poj 2411 Mondriaan's Dream(状态压缩dP)

    题目:http://poj.org/problem?id=2411 Input The input contains several test cases. Each test case is mad ...

  10. bzoj2432

    被虐的体无完肤, 直接给题解地址吧:http://vfleaking.blog.163.com/blog/static/174807634201341721051604/ ; ..,..] of in ...