Prawdopodobnie dzieje się coś głupiego, ale próbuję włączyć przyspieszenie sprzętowe w aplikacji kierowanej na 3.1, na this tutorial.Przyspieszenie sprzętowe nie jest włączone
Dodałem następujące do mojego manifestu:
<uses-sdk
android:targetSdkVersion="12"
android:minSdkVersion="12" />
<application
...
android:hardwareAccelerated="true">
Kiedy sprawdzić stan akceleracji sprzętowej po View jest dołączony (poprzez wywołanie isHardwareAccelerated()
w nadpisane onAttachedToWindow()
) Jestem powrócił prawdziwy, więc wszystko wygląda świetnie. Problem polega na tym, że płótno SurfaceView NIE jest akcelerowane, ponieważ canvas.isHardwareAccelerated()
zwraca wartość false. Sprawdzam w surfaceCreated()
i również tam się sprawdzam, więc nie mam pojęcia, na co płótno traci to ustawienie.
Jakieś wskazówki?
Edit1:
Znaleziony this i this na grupie Google Developers, ale ja rzeczywiście sprawdzanie po View jest dołączony jakbym sprawdzenie tego w onAttachedToWindow()
, prawda? Dotyczy to tabletu Lenovo z 3.1 BTW.
EDIT2:
Próbowałem wyłączyć akcelerację poprzez ustawienie
<application
...
android:hardwareAccelerated="false">
A ja wciąż widząc prawda wrócił z widokiem na onAttachedToWindow()
, więc coś tu nie jest w porządku. Nie mówię wprost o hw accel z kodu, może problem specyficzny dla urządzenia?
Również widzę następującą linię sporadycznie w LogCat gdy SurfaceView tworzony jest:
surface (identity=524) is invalid, err=-19 (No such device)
Edit3:
Tylko głośno myślę tutaj, ale czy jest jakaś szansa, że płótna nie jest jest przyspieszany ze względu na fakt, że znajduje się na własnym wątku, poprzez typową implementację SurfaceView, która wykorzystuje pętlę rysunkową, jak Lunar Lander?