2012-06-05 3 views
0

Android 전문가에게 도움이 필요합니다. 나는 안드로이드 멍청 아. 기본 UI 스레드 외부에서 캔버스를 사용하여 비트 맵을 그릴 필요가있는 응용 프로그램이 있습니다. SurfaceView 클래스를 발견하고 간단한 데모를 조롱했습니다. 나는 별도의 비트 맵 인스턴스를 생성하고 그것을 끌어 들인다. SurfaceView의 OnDraw가 발생하면이 비트 맵을 SurfaceView에 복사합니다. 활동이 끝날 때까지 (예 : 홈 화면으로 돌아갈 때까지) 효과가 있습니다. 그 시점에서, SurfaceView 스레드가 멈춘 것처럼 보이고, 내가 작업하고있는 비트 맵 이미지를 잃어 버리는 것 같습니다. 앱으로 돌아 가면 처음부터 다시 시작됩니다.활동이 끝나면 비트 맵을 지속합니다.

퍼포먼스상의 이유로 메인 UI 스레드와는 별도의 스레드에서 캔버스 2D 드로잉 호출을 사용하여 비트 맵 이미지를 생성하고 싶습니다. 잠시 후에 그 비트 맵을 주 사용자 인터페이스로 가져와야합니다. 그리고 비트 맵 이미지가 유지되고 활동이 일시 중지되거나 중단되었을 때 계속 유지되도록 (계속 유지하려면) 비트 맵 이미지가 필요합니다.

메인 UI 스레드에서 모든 도면을 수행해야하므로 SurfaceView가 유일한 해결책 인 것처럼 보입니다. 하지만 나는 그 중 하나를 기대했던 것처럼 작동하지 않습니다.

백그라운드 작업이나 스레드가 실행을 멈추지 않아서 비트 맵 이미지를 만들어야하고 잠시 후 기본 인터페이스로 비트 맵을 가져와야합니다 (예 : 10hz 업데이트).

HELP! 어떻게해야합니까?

+0

당신을 위해 별도의'process' 작업을 생성합니까 나는이 처리 할 수있는 사용하여 캐싱을 생각? –

+0

안녕하세요 다크 크로우, 슈퍼 빠른 답장을 보내 주셔서 감사합니다. 좀 더 자세히 설명해 주시겠습니까? C++, NDK 및 별도의 프로세스를 사용 하시겠습니까 ?? 미안 나는 아직도 멍청이야. – Batdude

+0

'Android Manifest'에서는별로 도움이되지 않는 별도의'process'를 생성 할 수 있습니다. –

답변

0

asynctask를 사용하여 이미지를 UI에 그립니다.

그러나 앱이 다시 열릴 때 캔버스를 다시 그려야합니다. 작성한 비트 맵을 저장하려면 어 @ 곳에 저장해야합니다. 그렇지

view.setDrawingCacheEnabled(true); 

비트 맵을 직접 관리 조사 :

v1.setDrawingCacheEnabled(true); 
bitmap = Bitmap.createBitmap(v1.getDrawingCache()); 
+0

감사합니다. AyncTasks와 UI에 대해 실제로 매우시의 적절하게 읽고있었습니다. 캐싱에 대해서도 살펴볼 것입니다. 많은 감사합니다! – Batdude

+0

문제 없습니다. 기꺼이 도와 드리겠습니다. StackOverflow에 오신 것을 환영합니다. 당신은 "대답하지 않은"목록에서 벗어나기 위해 답을 받아 들여야합니다. – bhekman

+0

좋아, 나는 그것을 몰랐다. 그래도 다른 아이디어가 있는지 기다리고 싶습니다. 그럼 내가 닫을거야. – Batdude

관련 문제