当应用程序关闭时如何重新启动服务?

5
我正在使用该服务每30秒发送通知。当我的应用程序处于后台模式时,它工作得很好。每个通知都能正确接收。但是当我杀死/关闭我的应用程序时,服务停止了,我就无法收到任何通知。

有人有想法如何在应用程序关闭或被杀死时运行该服务吗?

这是我的清单文件:
``

<uses-sdk
    android:minSdkVersion="11"
    android:targetSdkVersion="21" />

<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES" />

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name" >
    <activity
        android:name=".MainActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

    <service
        android:name=".MainService"
        android:enabled="true"
        android:exported="false"
         >
    </service>
    <service android:name=".NewService" >
    </service>

    <activity
        android:name=".MainActivity2"
        android:label="@string/title_activity_main_activity2" >
    </activity>
</application>

`


从最近使用的应用中清除? - MysticMagicϡ
是的,我正在从最近使用的应用程序中关闭该应用程序。 - tech.mohit.garg
1个回答

2
如果您希望在从“最近使用的应用程序”列表中杀死应用程序后继续服务,则在清单文件中将 stopWithTask 设置为 false

<service
    android:enabled="true"
    android:name=".MyService"
    android:exported="false"
    android:stopWithTask="false" />

您的服务应该是粘性的。

@Override
public final int onStartCommand(Intent intent, int flags, int startId) {
    Log.i(TAG, "onStarCommand(): Received id " + startId + ": " + intent);
    return START_STICKY; // run until explicitly stopped.
}

关于如何在应用程序被从最近列表中清除后继续服务,可以参考这个问题的所有详细信息。

如果你想在应用程序从最近列表中被移除时执行一些额外的操作,可以重写onTaskRemoved方法。

希望这可以帮助到你。


它正常工作,但当我点击最近应用程序按钮时,我的应用程序直接打开,我不希望这样打开我的应用程序。 - tech.mohit.garg
你是点击最近应用程序还是移除它?如果用户从最近应用程序列表中打开应用程序,您想要执行什么操作?将代码放在该活动的onResume中。 - MysticMagicϡ
你说的不是很清楚,请详细解释一下。 - MysticMagicϡ
当我点击最近应用程序按钮(在主页按钮右侧)时,我的应用程序会打开,而不是显示最近的应用程序列表。除此之外,根据您提供的代码,功能正常运行。现在清楚了吗? - tech.mohit.garg
你找到解决方案了吗? - M.Yogeshwaran
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接