当它未运行时在后台启动Android应用程序

时间:2017-03-26 21:21:50

标签: android background-process remote-notifications

此问题与the one I asked for iOS一致,与this one无关。

我想知道人们可以使用什么机制在Android设备上启动强制退出的应用程序,或者自上次重启设备以来尚未启动的应用程序。我想无法在前台启动应用程序,但应该有一种方法可以在后台启动它。

也许我们可以发送某种静音远程通知"这将启动我们的应用程序以处理此通知,并且可能反过来决定设置本地通知以显示给用户。

我正在寻找一种记录在案的100%可靠的方式,不受操作系统的影响,但实际上会在后台启动应用程序,并允许它做事。

2 个答案:

答案 0 :(得分:0)

试试这个guide。 基本上你将它添加到你的清单:

<application
    android:icon="@drawable/icon"
    android:label="@string/app_name">
    ...
    <!--
        Because android:exported is set to "false",
        the service is only available to this app.
    -->
    <service
        android:name=".RSSPullService"
        android:exported="false"/>
    ...
<application/>

然后将此块添加到您需要的任何内容中:

public class RSSPullService extends IntentService {
    @Override
    protected void onHandleIntent(Intent workIntent) {
        // Gets data from the incoming Intent
        String dataString = workIntent.getDataString();
        ...
        // Do work here, based on the contents of dataString
        ...
    }
}

guide也有帮助。

答案 1 :(得分:0)

您可以从BroadcastReceiver启动应用以响应各种系统广播,包括设备启动,预定警报等。托管后台进程的正确组件是Service。如果服务请求前台状态,服务就不太可能被杀死,这会产生持续的(不允许的)通知。

主要警告是,除非用户自安装应用程序以来或自上次强行关闭以来已手动启动其中一项活动,否则永远不会调用BroadcastReceiver