android-Android两个子线程同步问题

问题描述

Android两个子线程同步问题

现在Android端有这么一个需求,将Android的屏幕不停地截图然后通过Socket发送,现在希望能将截图和发送分为两个线程,有没有哪位能教教我啊,因为刚做Android没有多久,最好能有一个小Demo讲解一下,例如一边截图,一边保存的Demo,非常感谢;

解决方案

建立一个的消息队列做图片顺序控制和数据缓冲,截图线程截图后把截图(对象或者图片路径)从队尾插入,发送线程从队头取图片,队列满截图线程等待,队列空发送线程等待,设计的时候,应该根据设备的配置和数据情况在两个线程都设定个动态的平均休眠值(每次截图或发送间隔),避免列队空或者队列满,否则会导致出现卡帧的现象,不过如果是局域网的话,传输速度快,代码没太大问题的话,一般不会卡帧。

关键的实现部分其实跟是否是android平台没啥太大的关系,思路给你了,代码还是自己写吧

另外,提醒你一下,android上整个屏幕截图(应用外截图)是需要root权限的,如果只是应用内截图(自己程序的Activity、View等),那就没问题

解决方案二:

通过容器存放截图路径…两个线程同时开工,一个负责截图,存到内存卡,并把路径放入容器,如果容器满了,停止截图,未满继续存放。另一个线程负责发送,每次取一个路径,获取图片发送,如果容器空就阻塞…容器要求线程安全。这是生产者消费者思想

解决方案三:

建立一个的消息队列做图片顺序控制和数据缓冲,截图线程截图后把截图(对象或者图片路径)从队尾插入,发送线程从队头取图片,队列满截图线程等待,队列空发送线程等待,设计的时候,应该根据设备的配置和数据情况在两个线程都设定个动态的平均休眠值(每次截图或发送间隔),避免列队空或者队列满,否则会导致出现卡帧的现象,不过如果是局域网的话,传输速度快,代码没太大问题的话,一般不会卡帧。

关键的实现部分其实跟是否是android平台没啥太大的关系,思路给你了,代码还是自己写吧

另外,提醒你一下,android上整个屏幕截图(应用外截图)是需要root权限的,如果只是应用内截图(自己程序的Activity、View等),那就没问题

解决方案四:

建议采纳“陌上百度”童鞋的思路。

解决方案五:

对,就是生产者消费者问题。
一个存一个取~

时间: 2016-07-07
Tags: android, 线程

android-Android两个子线程同步问题的相关文章

Java多线程编程中synchronized线程同步的教程_java

0.关于线程同步 (1)为什么需要同步多线程?线程的同步是指让多个运行的线程在一起良好地协作,达到让多线程按要求合理地占用释放资源.我们采用Java中的同步代码块和同步方法达到这样的目的.比如这样的解决多线程无固定序执行的问题: public class TwoThreadTest { public static void main(String[] args) { Thread th1= new MyThread1(); Thread th2= new MyThread2(); th1.sta

Android多线程研究(3)线程同步和互斥及死锁

为什么会有线程同步的概念呢?为什么要同步?什么是线程同步?先看一段代码: package com.maso.test; public class ThreadTest2 implements Runnable{ private TestObj testObj = new TestObj(); public static void main(String[] args) { ThreadTest2 tt = new ThreadTest2(); Thread t1 = new Thread(tt,

android APP 最少有两个线程

问题描述 android APP 最少有两个线程 一个android APP 最少有两个线程,一个是IPCThreadState::joinThreadPool 另外 一个是looper 线程,来处理消息队列,请问这两个线程之间如何交互呢?什么时候交互? 解决方案 http://410063005.iteye.com/blog/1750632 解决方案二: android 线程间的通信http://www.cnblogs.com/allin/archive/2010/05/19/1738800.

Android实现两个ScrollView互相联动的同步滚动效果代码_Android

本文实例讲述了Android实现两个ScrollView互相联动的同步滚动效果代码.分享给大家供大家参考,具体如下: 最近在做一个项目,用到了两个ScrollView互相联动的效果,简单来说联动效果意思就是滑动其中的一个ScrollView另一个ScrollView也一同跟着滑动,要做到一起同步滑动.感觉在以后的项目开发中大家可能也会用到,绝对做个Demo分享出来,供大家一起学习,以便大家以后好用,觉的不错,有用的可以先收藏起来哦! 其实对于ScrollView,Android官方并没有提供相关

Android实现两个ScrollView互相联动的同步滚动效果代码

本文实例讲述了Android实现两个ScrollView互相联动的同步滚动效果代码.分享给大家供大家参考,具体如下: 最近在做一个项目,用到了两个ScrollView互相联动的效果,简单来说联动效果意思就是滑动其中的一个ScrollView另一个ScrollView也一同跟着滑动,要做到一起同步滑动.感觉在以后的项目开发中大家可能也会用到,绝对做个Demo分享出来,供大家一起学习,以便大家以后好用,觉的不错,有用的可以先收藏起来哦! 其实对于ScrollView,Android官方并没有提供相关

Android怎么实现把子线程接收到的实时数据传送给UI界面并用textview显示

问题描述 Android怎么实现把子线程接收到的实时数据传送给UI界面并用textview显示 40C Android蓝牙模块接受到的输入流要显示在程序中另一个Activit中,并且实时更新数据,哪位大神help一下啊 解决方案 你可以百度一下EventBus这个工具,如果有不懂的可以问我. 解决方案二: 在Android中规定只有UI thread可以更新界面,但是我们开发中会经常遇到一些耗时的操作,这些操作可能会很花费时间,最终的结果却要更新到UI上这种情况下,如果我们将这个操作放到UI t

Win32下两种用于C++的线程同步类(上)

线程同步是多线程程序设计的核心内容,它的目的是正确处理多线程并发时的各种问题,例如线程的等待.多个线程访问同一数据时的互斥,防死锁等.Win32提供多种内核对象和手段用于线程同步,如互斥量.信号量.事件.临界区等.所不同的是,互斥量.信号量.事件都是Windows的内核对象,当程序对这些对象进行控制时会自动转换到核心态,而临界区本身不是内核对象,它是工作在用户态的.我们知道从用户态转换到核心态是需要以时间为代价的,所以如果能在用户态就简单解决的问题,就可以不必劳烦核心态了. 这里我要说的是两种用

Android 调试不进线程

问题描述 Android 调试不进线程 /** * 获取服务器图片路径 */ public void getinfo() { new Thread(){ public void run() { try { URL url=new URL(constants.GUIDEIMG); HttpURLConnection conn=(HttpURLConnection) url.openConnection(); //设置必要的参数信息 conn.setConnectTimeout(5000); con

android合并两个app,构建过了编译不通过,报错如下

问题描述 android合并两个app,构建过了编译不通过,报错如下 公司要求合并两个app,基本上构建过了,就是编译的时候报出这个错误.纠结了好久,又大神指导什么原因吗? 解决方案 我已经解决了谢谢啊.参考文献http://blog.csdn.net/t12x3456/article/details/40837287 解决方案二: 你是怎么合并的?能把代码架构截个图么?