私はcwac-locpollを使用しています。素晴らしい仕事をしています。ここでcwac-locpollを使用したWakeLockアンダーロック例外
java.lang.RuntimeException: WakeLock under-locked com.commonsware.cwac.locpoll.LocationPoller
at android.os.PowerManager$WakeLock.release(PowerManager.java:339)
at android.os.PowerManager$WakeLock.release(PowerManager.java:299)
at com.commonsware.cwac.locpoll.WakefulThread.onPostExecute(WakefulThread.java:59)
at com.commonsware.cwac.locpoll.LocationPollerService$PollerThread.onPostExecute(LocationPollerService.java:231)
at com.commonsware.cwac.locpoll.WakefulThread.run(WakefulThread.java:93)
はあなたが見ることができるように、私のLocationReceiver
クラスであるしかし、私のユーザーの一部は、次のような問題を取得している、ちょうどヘルパークラスを経由して私のアプリSharedPreferences
で得られた位置を格納します。
public class LocationReceiver extends BroadcastReceiver {
private static final String TAG = "LocationReceiver";
@Override
public void onReceive(Context context, Intent intent) {
Bundle b = intent.getExtras();
Location loc = (Location) b.get(LocationPoller.EXTRA_LOCATION);
if (loc == null) {
loc = (Location) b.get(LocationPoller.EXTRA_LASTKNOWN);
if (loc == null) {
Log.w(TAG, "Unable to get location. " + intent.getStringExtra(LocationPoller.EXTRA_ERROR));
} else {
Log.w(TAG, "Timeout getting location, using previous one " + loc);
}
} else {
Log.i(TAG, "Got location " + loc);
}
// save location in preferences
if (loc != null) {
PrefsHelper.setLastLocation(loc.getLatitude(), loc.getLongitude());
}
}
}
私はまた別のcwac-覚醒WakefulIntentService
この最後の位置を取得し、何かを使用していますが、それらはindepentendly実行するように設計されています。言い換えれば:
LocationReceiver
は、すべての今してSharedPreferences
で最後の既知の位置を保存するためにcwac-locpollによって呼び出されます。WakefulIntentService
は、この場所を取得して何かを行う予定です(個別に)。
ありがとう!
クイックレスポンスのための@CommowsWareに感謝します。私は間違いなくパッチを見守っています。 – gdecaso
CommonsWareの答えによれば、この問題は[v0.2.1](https://github.com/commonsguy/cwac-locpoll/issues/5)で解決されているようです。このバージョンに切り替えると問題は発生しませんでした。 – SHaKie
確かに。今解決されました。 – gdecaso