2
我想thread.So我使用一个线程来完成这项工作,这样来捕获背景画面:View的绘制方法可以在Android的后台线程上运行吗?
private void captureScreen(final Context context) {
new Thread(){
@Override
public void run() {
View view = ((Activity) context).findViewById(android.R.id.content);
Bitmap bmp = Bitmap.createBitmap(view.getWidth(), view.getHeight(),
Bitmap.Config.ARGB_8888);
if (null != bmp) {
view.draw(new Canvas(bmp));
stack.push(bmp);
}
}
}.start();
}
大部分时间是没有问题的,但有时这会通过“只原来的线程崩溃引起的能触摸这个“,所以使view.draw()运行在其他线程是正确的事情要做,或者你有更好的方法来捕获屏幕上的后台线程?
无论如何,但我想在后台线程,而不是UI线程,因此屏幕捕获将不会采取UI线程的资源。 –
不幸的是,没有办法更新不在UI线程中的视图元素。您可以在后台创建位图,但“view.draw(new Canvas(bmp));”必须位于UI线程中。 –