0

私はサービスを持っています(サービスを拡張します)。onCreate イベントでは、次のことを行います...

    locMgr = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
    locLstnr = new MyLocationListener();
    locMgr.requestLocationUpdates(LocationManager.GPS_PROVIDER, 10000, 10, locLstnr);  

(ところで、私はこれを10秒間隔で設定しており、少なくとも毎秒オフになります)

私のすべての情報によると、サービスを拡張するサービスがある場合、アクティビティがサービスを開始した回数に関係なく、別のサービスを開始することはなく、onCreate イベントを再度通過することはありません (ただし、onStartCommand を再度通過します)。

ログから、MyLocationListener の複数のインスタンスを取得しているという強力な証拠があります。2枚の時もあれば4枚の時もあれば8枚の時もある。そうでない場合は、サービスの複数のコピーを取得しています。

誰がこれを引き起こしているのか分かりますか?
ありがとう。

4

1 に答える 1

0

元のサービスを強制終了しない限り、onCreateを再度実行することはありません。それは未知の理由でかなり頻繁に行われます。次に、それを再作成します。これを回避する安価な方法は、onCreate関数に独自のサービスを開始させることです。これにより、サービスは常駐したままになります。ただし、メモリの内容は失われます。

于 2013-01-18T02:45:16.903 に答える