发布网友 发布时间:2024-03-03 20:20
共5个回答
热心网友 时间:2024-08-03 06:23
异步执行热心网友 时间:2024-08-03 06:22
如果service中有耗时操作肯定是要异步执行的 因为service与activity同属主线程热心网友 时间:2024-08-03 06:18
看你service里边怎么实现了,如果直接在service里边实现,那就是同步的,在同一个UI线程中执行的,如果在service中启动其他线程,然后调用listener相关方法,那就是异步的,因为有2个线程 查看原帖>>热心网友 时间:2024-08-03 06:17
TelephonyManager service 你的这个service确实会调用SystemServer中的listen方法,不光属于另外一个线程,而且是另外一个进程。你在listen回调里面打印的thread id是你的UI主线程是因为android接口使用了Binder进程跨进程通讯 查看原帖>>热心网友 时间:2024-08-03 06:22
android中,activity、service都是在主线程,也就是ui线程中运行的。想做实验的话,可以用thread.getThreadTag还是getThreadName什么的方法测试一下。实际上Android系统设计上,各个组件都是在一个主线程中执行的,service与activity的唯一区别就是service没有前台界面,不能直接与用户交互,另外可以相对保证不会被系统随便的kill掉。所以service适用于一些无需交互的后台操作,但如果你直接在service中进行耗时操作的话,依然会出现anr的问题,所以好的方式是在service中启动其他的线程去执行耗时操作。 查看原帖>>