diff --git a/ability/JsDistributedMusicPlayer/entry/src/main/config.json b/ability/JsDistributedMusicPlayer/entry/src/main/config.json index 1f0b159296010226ea0dc749d5b7e26104b859e9..79869938eb98e7fd34f0c5e8cf942862f0c640e4 100644 --- a/ability/JsDistributedMusicPlayer/entry/src/main/config.json +++ b/ability/JsDistributedMusicPlayer/entry/src/main/config.json @@ -43,7 +43,7 @@ "description": "$string:mainability_description", "label": "$string:app_name", "type": "page", - "launchType": "standard" + "launchType": "singleton" } ], "js": [ diff --git a/ability/JsDistributedMusicPlayer/entry/src/main/js/default/pages/index/index.js b/ability/JsDistributedMusicPlayer/entry/src/main/js/default/pages/index/index.js index aba10c29dd0779a39c4546368ad9181c5dfb152d..c4aafc47dadac182e222198ecceeedf31d091db8 100644 --- a/ability/JsDistributedMusicPlayer/entry/src/main/js/default/pages/index/index.js +++ b/ability/JsDistributedMusicPlayer/entry/src/main/js/default/pages/index/index.js @@ -51,13 +51,14 @@ export default { isSwitching: false, }, onInit() { - console.info('MusicPlayer[IndexPage] onInit'); + console.info('MusicPlayer[IndexPage] onInit begin'); DEVICE_LIST_LOCALHOST = { name: this.$t('strings.localhost'), id: 'localhost', }; this.deviceList = [DEVICE_LIST_LOCALHOST]; let self = this; + this.playerModel.initAudioPlayer(); this.playerModel.setOnStatusChangedListener((isPlaying) => { console.info('MusicPlayer[IndexPage] on player status changed, isPlaying=' + isPlaying + ', refresh ui'); self.playerModel.setOnPlayingProgressListener((currentTimeMs) => { @@ -96,6 +97,7 @@ export default { } }); }); + console.info('MusicPlayer[IndexPage] onInit end'); }, onBackPress() { console.info('MusicPlayer[IndexPage] onBackPress isDialogShowing=' + this.isDialogShowing); @@ -106,8 +108,10 @@ export default { return false; }, onDestroy() { + console.info('MusicPlayer[IndexPage] onDestroy begin'); this.playerModel.release(); this.remoteDeviceModel.unregisterDeviceListCallback(); + console.info('MusicPlayer[IndexPage] onDestroy end'); }, refreshSongInfo(index) { console.info('MusicPlayer[IndexPage] refreshSongInfo ' + index + '/' @@ -243,6 +247,15 @@ export default { deviceId: deviceId, parameters: params }; + var timerId = setTimeout(() => { + console.info('MusicPlayer[IndexPage] onMessageReceiveTimeout, terminateAbility'); + featureAbility.terminateAbility(); + }, 4000); + this.kvStoreModel.setOnMessageReceivedListener(REMOTE_ABILITY_STARTED, () => { + console.info('MusicPlayer[IndexPage] OnMessageReceived, terminateAbility'); + clearTimeout(timerId); + featureAbility.terminateAbility(); + }); featureAbility.startAbility({ want: wantValue }).then((data) => { @@ -250,10 +263,6 @@ export default { }); console.info('MusicPlayer[IndexPage] featureAbility.startAbility want=' + JSON.stringify(wantValue)); console.info('MusicPlayer[IndexPage] featureAbility.startAbility end'); - this.kvStoreModel.setOnMessageReceivedListener(REMOTE_ABILITY_STARTED, () => { - console.info('MusicPlayer[IndexPage] OnMessageReceived, terminateAbility'); - featureAbility.terminateAbility(); - }); }, onRadioChange(inputValue, e) { console.info('MusicPlayer[IndexPage] onRadioChange ' + inputValue + ', ' + e.value); diff --git a/ability/JsDistributedMusicPlayer/entry/src/main/js/model/PlayerModel.js b/ability/JsDistributedMusicPlayer/entry/src/main/js/model/PlayerModel.js index 8249050312772faa4cb29b31e2f081cbe839ff4a..11d2fba3ba164fae2a0492275185e17bd7556d19 100644 --- a/ability/JsDistributedMusicPlayer/entry/src/main/js/model/PlayerModel.js +++ b/ability/JsDistributedMusicPlayer/entry/src/main/js/model/PlayerModel.js @@ -44,12 +44,12 @@ export default class PlayerModel { #currentTimeMs = 0; constructor() { - this.#player = media.createAudioPlayer(); - console.info('MusicPlayer[PlayerModel] createAudioPlayer=' + this.#player); } initAudioPlayer() { console.info('MusicPlayer[PlayerModel] initAudioPlayer begin'); + this.#player = media.createAudioPlayer(); + console.info('MusicPlayer[PlayerModel] createAudioPlayer=' + this.#player); this.#player.on('error', (err, action) => { console.error(`MusicPlayer[PlayerModel] player error: ${err.code}`); }); @@ -74,8 +74,9 @@ export default class PlayerModel { release() { if (typeof (this.#player) != 'undefined') { - console.info('MusicPlayer[PlayerModel] player.release'); + console.info('MusicPlayer[PlayerModel] player.release begin'); this.#player.release(); + console.info('MusicPlayer[PlayerModel] player.release end'); this.#player = undefined; } }