用户终止应用程序后发出网络请求

时间:2020-03-16 09:50:30

标签: android kotlin

用户最近刷过一个应用程序后,如何发出网络请求?在应用程序进程被杀死之后,android似乎不允许网络访问。有没有办法做到这一点?

我想管理用户在线状态,其中应用程序启动会使他在线,而当应用程序被完全杀死时,他会离线。这是通过向我的API发送请求来完成的。

2 个答案:

答案 0 :(得分:1)

这很简单。您可以编写一个Android服务组件,该组件将覆盖一个名为onTaskRemoved()的方法,该方法将在每次通过重入页面删除应用程序时触发。因此,您可以尝试此解决方案,并查看它是否满足您的要求。这将彻底解决您的问题。

答案 1 :(得分:0)

您可以创建一个监听应用程序销毁的服务

class MyService: Service() {


        override onBind(intent:Intent):IBinder {
            return null
        }

        override onStartCommand(intent:Intent, flags:Int, startId:Int):Int {
            return START_NOT_STICKY
        }

        override onDestroy() {
            super.onDestroy()
        }

        override onTaskRemoved(rootIntent:Intent) {
            // this will be called when Your when the application is destroyed or killed
            // launch your Network request here
        }
}

并在清单文件中定义此服务:

<?xml version="1.0" encoding="utf-8"?>
<manifest
    xmlns:android="http://schemas.android.com/apk/res/android"
    ...>

    ...

    <application
        android:name=".MyApplication">
        ...
        <service android:name=".MyService" android:stopWithTask="false"/>

    </application>
</manifest>

然后在您的应用程序中启动它

class MyApplication: Application{

        override onCreate(){
            super.onCreate()
            val intent = Intent(this, MyService::java.class)
            startService(intent)
        }
}

选中此thread