2012-04-02 6 views
1

私は2つの活動のAndroidプロジェクトを持っています。 1つは私の主な活動で、ネイティブコードから更新されたGLSurfaceViewを使用しています。もう1つはPurchaseActivityで、購入するためにGoogleのアプリ内課金クライアントを開きます。購入はうまくいく。In-App BillingクライアントがEGLコンテキストを失うのを止めるにはどうすればいいですか?

私はに実行している問題がPurchaseActivity終了後に、それが正常に完了したかどうか、ERRSということである、またはキャンセルされ、それが主な活動に切り替わり、EGLコンテキストは消え、私が受け取る:

onSurfaceCreated()onSurfaceChanged()方法が再トリガされた後(スレッドごとに一度ログイン)なし現在のコンテキストとのOpenGL ES APIへ

コール

私はthis questionと似ていますが、私は既に別のアクティビティで動作しています。finish()コールを削除すると、そのままPurchaseActivityにスタックされたままです。

アプリ内請求の呼び出し後に実際にテクスチャをリロードする必要はありますか?アプリが中断されていないので、この時点では必要ないはずです。

マイレンダラコードは、課金クライアントウィンドウが閉じた後、それは新しい表面をトリガし、私のネイティブコードを吹くまで、かなり基本的なしかし、何らかの理由である:

public class GameRenderer implements GLSurfaceView.Renderer 
{ 
    public void onSurfaceCreated(GL10 gl, EGLConfig config) 
    { } 

    public void onSurfaceChanged(GL10 gl, int width, int height) 
    { 
     BaseLib.setScreenSize(width, height); 
     BaseLib.init(); 
    } 

    public void onDrawFrame(GL10 gl) 
    { 
     BaseLib.render(); 
    } 
} 

答えて

1

あなたはこのスレッドを見たことがありますか?

Prevent onPause from trashing OpenGL Context

私はあなたがリソースを解放するためにGLSurfaceViewを伝え、あなたが活動を切り替えるonPauseを取得推測します。

API 11+には、コマンドsetPreserveEGLContextOnPauseがありますが、これより低いAPIレベルをターゲットにしたい場合は、それが解決策であるかどうかはわかりません。

+0

私の問題の根本にある自分のコードの競合状態でしたが、これも参考になりました。 –

関連する問題