项目地址: https://github.com/mthli/SugarTask
使用方法特别简单,只需要使用 SugarTask.with(Actiivity/Fragment).assign(YOUR_TASK).execute();
即可创建一个简单的后台线程,而且不用在意后台异步操作时 Actiivity/Fragment 突然结束生命周期而导致的 OOM/NPE ,因为 SugarTask 可以实时监听当前依附的 Actiivity/Fragment 的生命周期,并且在适当时候取消在主线程的回调。
整个实现大约只有 400 行代码,外加 100 行注释,有兴趣的同学可以使用看看,欢迎 Star/PR/Issue 。
当然,如果当前实现其实并没有什么卵用的话,还请轻喷 :)
1
cameo 2015-10-02 11:37:14 +08:00
为了取消任务封装这么一堆东西,而且写死了在 onStop 的时候取消,如果我想在 onPause 的时候取消怎么办?我想在 onResume 的时候恢复怎么办?而且有些场景下可能需要更精细的控制,比如在 Fragment 的 onHidden 里面也要做一些事。反过来,我自己控制生命周期,也就一行 cancel 的事。所以我认为你做的是错误的封装,弊大于利。
不说封装,代码本身的问题: 一、 new Message() 应该用 Message.obtain(int) 或其他同名方法。 二、 taskMap 在主线程、后台线程都有读写操作而没有做任何同步,会有线程安全的问题,虽然你跑一两次可能碰不到。 |