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線程中。 –