【android安卓】一个注解搞定线程切换,基于AOP的线程转换框架

先上酸菜:Github地址

最简单的使用方法:
模拟进度展示:

   @RunOnIOThread
   public void progress() {
        for (int i = 0; i <= 100; i++) {
            showProgress(i);
            SystemClock.sleep(1000);
        }
    }

    @RunOnUIThread
    private void showProgress(int progress) {
        mTvTest.setText(progress + "%");
    }

框架提供3种线程注解:

@RunOnUIThread (被注解的方法在UI线程执行)
@RunOnIOThread (被注解的方法在子线程执行,适合耗时操作)
@RunOnBackGround (被注解的方法在后台线程执行,所有被注解的方法都在同一个线程,队列执行,不适合耗时操作)

关于子线程在activity和fragment中进行耗时操作导致的内存泄漏,本框架提供解决办法:

在耗时操作的循环体中加入以下代码:

if (Thread.currentThread().isInterrupted()) return;

如果是采用休眠的耗时操作,请在捕获InterruptedException异常后跳出循环

注意:

只在注解 @RunOnIOThread 的子线程中有效,利用了安卓新特性Lifecycle

其它2个注解不适合做耗时操作,不做处理

小贴士

在 app 的 build 依赖里再加一个依赖:

implementation 'com.github.jarryleo:MagicPermission:v1.0'

即可使用安卓纯注解动态权限申请框架

在需要权限的方法上打上注解,全自动处理动态权限各种问题:

自动处理用户同意/拒绝操作,自动处理用户拒绝并勾选不在提示后的 弹框提示,并跳转到设置界面引导用户开启权限

用户在设置界面返回后自动处理 设置界面操作的结果,

兼容国产rom

使用示例:

单个权限申请

@PermissionRequest(Manifest.permission.CAMERA)
public void testPermission() {
        //执行权限申请通过后的业务逻辑
}

多个权限同时申请

@PermissionRequest({Manifest.permission.CAMERA,
            Manifest.permission.WRITE_EXTERNAL_STORAGE})
public void testPermission() {
        //执行权限申请通过后的业务逻辑
}

注意:只能在Fragment(v4)和FragmentActivity 以及它们的子类 中使用

如果觉得好用的话,给个star吧,欢迎留言

    原文作者:JarryLeo
    原文地址: https://www.jianshu.com/p/f54388b65cb5
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞