美文网首页Android
【Android】异步任务设置返回值

【Android】异步任务设置返回值

作者: 小八八八八八八 | 来源:发表于2019-07-30 16:31 被阅读0次

    我们知道通常情况下使用异步任务没有办法设置返回值,最近新学会一招,通过这个方法可以同步的获取在另一个线程执行代码的结果

    public InstallResult installPackageSync(String apkPath, int flags) {
        final ConditionVariable lock = new ConditionVariable();
        final InstallResult[] out = new InstallResult[1];
        installPackage(apkPath, flags, new InstallCallback() {
            @Override
            public void onFinish(InstallResult result) {
                lock.open();
                out[0] = result;
            }
        });
        lock.block();
        return out[0];
    }
    

    这里我们使用ConditionVariable来阻塞释放线程,用数组来存储方法结果

    一个简单的例子

    public void onClick(View view) {
        Log.e("TAG", "点击了按钮");
        AsyncTask.execute(new Runnable() {
            @Override
            public void run() {
                final String result = simulationNet();
                Log.e("TAG", "run result: " + result );
            }
        });
    }
    
    private String simulationNet() {
        final ConditionVariable conditionVariable = new ConditionVariable();
        final String[] result = new String[1];
        new Thread(new Runnable() {
            @Override
            public void run() {
                SystemClock.sleep(3000);
                result[0] = "这是返回值";
                conditionVariable.open();
            }
        }).start();
        conditionVariable.block();
        return result[0];
    }
    
    image.png

    相关文章

      网友评论

        本文标题:【Android】异步任务设置返回值

        本文链接:https://www.haomeiwen.com/subject/ycvnrctx.html