2 qq 21940627 qq_21940627 于 2016.03.28 17:56 提问

Android两个子线程同步问题

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

5个回答

cckker
cckker   2016.03.30 19:47
已采纳

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

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

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

u013755250
u013755250   2016.03.28 18:09

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

cckker
cckker   2016.03.30 19:46

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

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

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

luochoudan
luochoudan   Ds   Rxr 2016.03.28 19:27

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

crazy1235
crazy1235   Ds   Rxr 2016.03.29 10:40

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

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!