2012-02-17 8 views
0

私はとき肖像とオフ、このコードを使用して風景が、それは常にアクティブなままにproximitywakelockをオンにするtryngだ:どのようウォークロックを解除するには?

//in onCreate() of my Activity 

    PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE); 
    mProximityWakeLock = pm.newWakeLock(32, ""); // proximity_wake_lock=32 
    mProximityWakeLock.setReferenceCounted(false); 

    if (getResources().getConfiguration().orientation != Configuration.ORIENTATION_LANDSCAPE) { 
     Toast.makeText(this, "non landascape", Toast.LENGTH_SHORT).show(); 

     if (!mProximityWakeLock.isHeld()) { 
      mProximityWakeLock.acquire(); 
      Toast.makeText(this, "acquired", Toast.LENGTH_SHORT).show(); 
     } 

     if (!mProximityWakeLock.isHeld()) 
      Toast.makeText(this, "not held", Toast.LENGTH_SHORT).show(); 
     else 
      Toast.makeText(this, " held", Toast.LENGTH_SHORT).show(); 

    } else { 

     if (!mProximityWakeLock.isHeld()) 
      Toast.makeText(this, "not held", Toast.LENGTH_SHORT).show(); 
     else 
      Toast.makeText(this, " held", Toast.LENGTH_SHORT).show(); 

     Toast.makeText(this, "landascape", Toast.LENGTH_SHORT).show(); 

     if (mProximityWakeLock.isHeld()) { 
      mProximityWakeLock.release(); 
      Toast.makeText(this, "released", Toast.LENGTH_SHORT).show(); 
     } 

    } 

それが風景に際開催されたことがないているように見えます... isHeld()は実際に動作しますか? コードの問題点は何ですか?

+0

マニフェストファイルのwakelockについて宣言する必要があるように聞こえます – jap1968

+0

答えて

0

画面を回転させるたびに新しいウォークロックを作成していて、新しいウォークロックが保持されていないようです。

ログを見ると、ワークロックが漏れているように見える場合があります。

+0

なぜそれを言うのですか?ウォークロックオブジェクトの作成は、オリエンテーションチェックの外(前)です。 –

+0

@Deleted私は、画面が回転するたびに新しいwakeLockを作成すると言っています。しかし、あなたは古いものをリリースしていますか?例えば。 'onDestroy()'(おそらくそれが呼び出される保証されていないので最適な場所ではないかもしれませんが、あなたが私が意味することを理解していただければ幸いです)。 – tidbeck

関連する問題