无论使用什么方法建立子线程,考虑下面的问题。
问题一##
如何避免造成内存泄漏?
典型场景是在Activity中创建子线程,耗时操作结束前Activity被finish了。
解决方法一####
切断Activity与子线程的直接联系。
而子线程的创建必须要在主线程中,无论是new Thread还是AsnyckTask,因为Handler的创建必须在主线程。
那么就在Service中创建子线程,为了使Activity结束时不结束Service,只能使用startService。
解决方法二####
在耗时操作前禁止用户退出Activity。
比如百度贴吧发帖,服务器没返回发帖结果前,会一直有个禁止取消的Dialog。
简单暴力。如果产品没有意见,就这样办吧。
问题二##
如果使用方法一,那么回调结果如何改变UI?
关于Service能否直接改变UI,这似乎是一个随机事件……