activity 启动的时候 用“startService(new Intent(this, mService.class));”启动一个Service
同时 显示一个ListView。Service中 private Runnable run = new Runnable() { @Override
public void run() {
//从sd卡读取文件的方法沈略(读取sd卡花费多长时间,ListView就看多长时间)
handler.postDelayed(run, 5000);//这里设置的的5秒钟,也就是下面activity打嗝问题的周期
}
};然后在Service中的onStart里面 th = new Thread(run);
th.run();结果是在拖动ListView时,每隔5秒钟 就卡一下。给位给些指点,分析分析到底是哪里出了问题,是多线程没用对,还是IO阻塞?
同时 显示一个ListView。Service中 private Runnable run = new Runnable() { @Override
public void run() {
//从sd卡读取文件的方法沈略(读取sd卡花费多长时间,ListView就看多长时间)
handler.postDelayed(run, 5000);//这里设置的的5秒钟,也就是下面activity打嗝问题的周期
}
};然后在Service中的onStart里面 th = new Thread(run);
th.run();结果是在拖动ListView时,每隔5秒钟 就卡一下。给位给些指点,分析分析到底是哪里出了问题,是多线程没用对,还是IO阻塞?
解决方案 »
- 关于UI上控件按比例缩小
- 呼出菜单指定样式的
- 关于更新UI的问题
- 新人求助,关于编写一个android下简单的voip的程序
- 一个app用多个手机连接同一个局域网的无线 出现只有一台能上的情况啊
- Socket通讯,用java写的服务器端和客户端都没有问题。但是android做为客户端出现如下错误
- 在安卓上想做个简单的地图 求提供下思路。
- 为什么使用android原生mediaplayer作为音乐播放器(在线),偶尔会出现无响应(ANR)?
- listview嵌套gridview点击让点击想对应的的gridview item变色 。急!!
- 这个build.gradle要怎么改啊.
- android 有没有办法使dialog与控件对齐
- 如何通过android模拟器从android market上下载软件
th.run();
启动线程是用th.start(),run只是调用th的run方法,不会开辟一个线程。
这个是干嘛用的?
你已经再thread中执行了run对象,不需要再次执行了吧?
我是想让Runnable 每过五秒钟循环执行的!
handler是那个? th的?还是ui thread的?如果是ui thread的,那肯定就会出现你说的问题了。
大致的代码如下:
Handler m_handler=null;
HandlerThread m_thread = new HandlerThread("PowerManagerService") {
protected void onLooperPrepared() {
m_handler=new Handler();
m_handler.postDelayed(run, 5000);
}
};
mHandlerThread.start()
public class MyThread extends Thread {
private boolean running = false;
public void run() {
running = true;
while (running) {
yourWork();//你想做的事情
try {
Thread.sleep(5000);
} catch (Exception a) {
}
}
public void exitThread() {
running = false;
} }
在activity代码中,或者说在UI线程中,MyThread myThread = new MyThread();myThread.start();就可以了。exitThread()设置线程循环的标志位running无效,退出线程。myThread.exitThread()这样调用就可以了
恩,确是应该这样来搞! lz本来的代码还是会跑在主线程中,如果你的handler是定义在主线程中的话。