美文网首页
Android使用线程锁来控制特殊流程

Android使用线程锁来控制特殊流程

作者: sgfb | 来源:发表于2020-03-13 14:41 被阅读0次

在Android中有些事件的流程是指定类中的回调,例如Activity返回Activity.onActivityResult
所以在写一些封装的时候必须有指定流程,例如封装一个启动照相机并且获取返回的照片,形式应该会是:
启动照相机ImageUtils.openCamera,
然后在当前的Activity.onActivityResult再调用ImageUtils.parserResultImage。

使用锁后流程图

流程图

关键点是在startActivityForResult后上锁等待onActivityResult,在onActivityResult保存数据到指定位置后激活原线程即可继续业务,中间等待部分可以被封装隐藏具体实现使得业务流程是从上到下直行的

代码示例

    /**
     * 启动另一个Activity并且显示返回,这个方法是运行在工作线程中的
     */
    private void waitSecondActivityResultAndShowResult(){
        //启动另一个Activity
        startActivityForResult(new Intent(DemoActivity.this,SecondActivity.class),REQ_SECOND);
        //上锁
        synchronized (lock){
            try {
                lock.wait();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
        //被解锁后获取Activity返回显示
        System.out.println("second activity result:"+mData);
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if(requestCode==REQ_SECOND&&resultCode==RESULT_OK){
            //将Activity返回赋给mData
            mData=data.getStringExtra(SecondActivity.RES_STR_TEST);
            //解锁
            synchronized (lock){
                lock.notify();
            }
        }
    }

相关文章

  • Android使用线程锁来控制特殊流程

    在Android中有些事件的流程是指定类中的回调,例如Activity返回Activity.onActivityR...

  • ThreadLocal原理

    在处理多下线程并发安全的方法中,最常用的方法就是使用锁,通过锁来控制多个线程对临界区的访问。但是不管什么锁,乐观锁...

  • Android 面试问题

    Android线程安全Android一般情况下会使用一个主线程控制UI,非主线程无法控制UI,Android4.0...

  • ThreadLocal使用与原理

    在处理多线程并发安全的方法中,最常用的方法,就是使用锁,通过锁来控制多个不同线程对临界区的访问。 但是,无论是什么...

  • 超强解析:ThreadLocal的使用与原理,关键点都在里面

    点赞再看,养成习惯! 在处理多线程并发安全的方法中,最常用的方法,就是使用锁,通过锁来控制多个不同线程对临界区的访...

  • Java 提高锁性能的5点建议

    减少锁持有的时间 对于使用锁来进行并发控制的程序而言,线程对锁的持有时间越长,必能会导致锁竞争变的越激烈。可以想象...

  • Handler机制 流程+源码

    前言 在Android中经常使用多线程开发,Handler则是基础,那么本文主要以流程+源码的形式来记录这种机制 ...

  • python3线程同步,Lock、Rlock、Condition

    线程同步 Lock、Rlock锁机制 使用锁的原因 为了避免线程间进行数据竞争,有时必须使用一些机制来强制线程同步...

  • Condition源码解析

    Condition是JUC里面提供于控制线程释放锁, 然后进行等待其他获取锁的线程发送 signal 信号来进行唤...

  • JUC之公平锁和非公平锁

    概念 公平锁是指多个线程按照申请锁的顺序来获取锁,采用先来后到哦,先来先服务的原则。老的线程排队使用锁,新线程仍然...

网友评论

      本文标题:Android使用线程锁来控制特殊流程

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