2016-01-10 13 views
5

以下は、アクティビティのonResume()部分のTextureViewにSurfaceTextureListenerを添付して行った少しの実験です。上SurfaceTextureはアクティビティの一時停止/再開のサイクルに耐えますか?

  • 新たなスタート:表面テクスチャが( "onSurfaceTextureAvailable")利用できるようになる

    姿勢変更上
  • :私が期待するように、表面のテクスチャが破壊される( "onSurfaceTextureDestroyed")表面テクスチャが利用可能になる(「onSurfaceTextureAvailable」)。タスクスイッチ上

    • が、その後再開:

    は今ここに私を驚かすものだ(表面テクスチャは(ない「onSurfaceTextureDestroyed」)破壊されていないされていないと、表面の質感が利用できるようにされていませんノー "onSurfaceTextureAvailable")これらの条件の下で

は、私は古いSurfaceTextureがSTIL​​であることを保証しています有効ですか?私のSurfaceTextureがいつ利用可能になったのか、私が実際に知っていることを確認するにはどうすればいいですか?オリエンテーションの変更がタスクスイッチと異なるのはなぜですか、どのように知るべきですか?


public class MainActivity extends AppCompatActivity { 
    private final String TAG = "MainActivity"; 
    TextureView mTextureView; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     mTextureView = (TextureView) findViewById(R.id.textureView); 
    } 

    @Override 
    public void onResume() { 
     super.onResume(); 
     mTextureView.setSurfaceTextureListener(new TextureView.SurfaceTextureListener() { 
      @Override 
      public void onSurfaceTextureAvailable(SurfaceTexture surface, int width, int height) { 
       Log.d(TAG, "onSurfaceTextureAvailable"); 
      } 
      @Override 
      public void onSurfaceTextureSizeChanged(SurfaceTexture surface, int width, int height) { 
       Log.d(TAG, "onSurfaceTextureSizeChanged"); 
      } 
      @Override 
      public boolean onSurfaceTextureDestroyed(SurfaceTexture surface) { 
       Log.d(TAG, "onSurfaceTextureDestroyed"); 
       return false; 
      } 
      @Override 
      public void onSurfaceTextureUpdated(SurfaceTexture surface) { 
      } 
     }); 
    } 
} 

答えて

0

I'dは、それは問題ではない、それは「ノーマル」または行動「であると予想さ」ではないと言います。あなたのデバイスのハードウェアと、リソース使用量やハードウェアの変更によるシステムの過負荷をどのように処理するかが大変重要です。

あなたのデバイスに非常にフレキシブルなグラフィックアクセラレータが搭載されていれば、サーフェスは向きが変わっても生き残ることができます。デスクトップモードからフルスクリーンモードへのビデオモードの変更後、すべてのDirectXサーフェス(表面がビデオメモリ)を再作成する必要がある場合は、デバイスのタイトルが変更されたときにビデオモードが完全に変更され、逆に。

テクスチャやバックバッファなどのサーフェスとしてすべてのビデオメモリ量を使い果たしているアプリケーションが重いリソース使用量のゲームである場合も同じことが起こります。別のアプリケーションとこの新しい表面空間が必要な場合は、ビデオメモリの一部または全部を削除して、この新しい画面が機能するようにする必要があります。

それで...あなたは見ていますか?ビデオメモリ全体を使い切っていないか、両方を処理できる最新のソフトウェアを持っています。 またはソフト変更はあなたのリソースを破壊しません。

私の、そうでなければ無駄なスピーチの道徳は、あなたのデバイスでは決して起こっていなくても破壊された場合、またはキャンバスをロックしようとするか、ヌルに。

関連する問題