当我在Android中杀死我的应用时,为什么服务会重新启动?

时间:2015-09-07 11:01:18

标签: android service xmpp

尝试使用android

中的服务保持xmpp连接处于活动状态
- (void)updateMusicInfo
{
    if(_localSongList.count != 0)
    {
        _currentTrackNumber = [DataHolder getCurrentTrackNumber];

        MPMediaItem *mediaItem = [_localSongList objectAtIndex:_currentTrackNumber];

        if(mediaItem != nil)
        {
            MPMediaItemArtwork *itemArtwork = [mediaItem valueForKey:MPMediaItemPropertyArtwork];

            UIImage *iconImage;

            if(itemArtwork == nil)
            {
                iconImage = [UIImage imageNamed:@"default_music_cover.png"];
            }

            else
            {
                iconImage = [itemArtwork imageWithSize:CGSizeMake(_ivSongCover.frame.size.height, _ivSongCover.frame.size.width)];
            }

            [_ivSongCover setImage:iconImage];
        }
    }
}

}

我杀了我的应用后,我的服务重新启动。为什么会这样?当我重新启动它时,在connection = XMPPClient.getConnection();给我一个异常NetworkOnMainThreadException。 当我杀死我的应用时,我不希望我的服务重新启动。

2 个答案:

答案 0 :(得分:0)

在服务的onStartCommand(Intent,int,int)函数中使用START_NOT_STICKY。

例如: public static final int START_NOT_STICKY http://developer.android.com/reference/android/app/Service.html

答案 1 :(得分:0)

START_STICKY标志会导致服务在销毁时自动重启。你的onstartCommand应该返回START_NOT_STICKY而不是START_STICKY。

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
    onHandleIntent();
    return START_NOT_STICKY;
}