servive 进程运行几秒后就anr

lmcandoit 2015-08-14 12:35:54
public int onStartCommand(Intent intent,int flags, int startId) {
// TODO Auto-generated method stub
super.onStart(intent, startId);
for(int i=0;i<5;i++){
new Thread(new Runnable() {
public void run() {
Context context = getBaseContext();
InfoforService.getRunningAppProcessInfo(context, pack);
}
}).start();
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
e.printStackTrace();
}

}
...全文
118 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
lmcandoit 2015-08-14
  • 打赏
  • 举报
回复
我想要实现的是间隔10s后,运行一下InfoforService.getRunningAppProcessInfo(context, pack)这个方法去监控数据
sagittarius1988 2015-08-14
  • 打赏
  • 举报
回复
引用 4 楼 lmcandoit 的回复:
@嘿木耳 你这样修改的话,会同时启动5个进程运行,我想要实现的时,每隔10s,去启动一个进程调用InfoforService.getRunningAppProcessInfo(context, pack)去监控数据
那就用handler,每次执行完判断是否继续发消息执行下一次,这样的间隔时间是从你上一次执行完到下一次开始,timetask的话,是前后两次执行的时间间隔为10s
只为搞笑 2015-08-14
  • 打赏
  • 举报
回复
Service也是在主线程里跑着的
lmcandoit 2015-08-14
  • 打赏
  • 举报
回复
@ zxb3121999 3Q,就是要这个东西
zxb3121999 2015-08-14
  • 打赏
  • 举报
回复
用个timertask 就OK了 去循环检测就是了
lmcandoit 2015-08-14
  • 打赏
  • 举报
回复
@嘿木耳 你这样修改的话,会同时启动5个进程运行,我想要实现的时,每隔10s,去启动一个进程调用InfoforService.getRunningAppProcessInfo(context, pack)去监控数据
sagittarius1988 2015-08-14
  • 打赏
  • 举报
回复
。。。。 你可以用handler发延时消息触发执行你要的方法。 你现在的问题是,sleep是在主线程,直接卡死界面了。
new Thread(new Runnable() {
        	public void run() {
	        try {
                        Thread.sleep(10000);
                     } catch (InterruptedException e) {
                         e.printStackTrace();
                     }
        	Context context = getBaseContext();
        	InfoforService.getRunningAppProcessInfo(context, pack);	
        	}
        	}).start();
这样还算可以实现你的延时
Hare_ 2015-08-14
  • 打赏
  • 举报
回复
Thread.sleep(10000); 休眠10秒,service卡住5秒就anr了,你这肯定anr

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧