Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在android应用程序中发送http请求';谁在上面_Java_Android_Httprequest - Fatal编程技术网

Java 在android应用程序中发送http请求';谁在上面

Java 在android应用程序中发送http请求';谁在上面,java,android,httprequest,Java,Android,Httprequest,我有一些统计数据需要从我的Android 4.2+应用程序发送到我的服务器,等待响应。事实上,一些用户只运行一次,所以要从他们那里获取数据,我需要在主活动的顶部发送数据 据我所知,请求必须是同步的:若我在这里创建http工作线程,android将在http请求执行之前进一步运行并关闭应用程序。 假设只有一次发射,我不能期望在下一次发射时检查数据。 我甚至想过在onStop中启动服务(以确保在应用程序停止后代码将被执行)来处理这个请求,但在我看来它看起来很难看 您是如何做这些事情的?我建议您使用I

我有一些统计数据需要从我的Android 4.2+应用程序发送到我的服务器,等待响应。事实上,一些用户只运行一次,所以要从他们那里获取数据,我需要在主活动的顶部发送数据

据我所知,请求必须是同步的:若我在这里创建http工作线程,android将在http请求执行之前进一步运行并关闭应用程序。 假设只有一次发射,我不能期望在下一次发射时检查数据。 我甚至想过在onStop中启动服务(以确保在应用程序停止后代码将被执行)来处理这个请求,但在我看来它看起来很难看


您是如何做这些事情的?

我建议您使用IntentService,或者,您可以在onStop中触发您的工作

若我在这里创建http工作线程,android将在http请求执行之前进一步运行并关闭应用程序

不,android不会立即终止您的应用程序进程,您可以启动该服务,它将完成其工作。实际上,系统可能会关闭你的应用程序,但你必须立即打开其他沉重的应用程序,比如camera/等等

为了避免您的服务成为前台,通过添加通知,您可以覆盖onBackPress方法,并通过使用异步任务和onPostexecute()方法调用finish()来关闭活动,从这里发出http请求。
You can override your onBackPress method and make http request from here by using Async task and in onPostexecute() method call finish() to close activity.

//Something like this

@Override
    public void onBackPressed() {
        new AsyncTask<Void , Void , Void>(){

            @Override
            protected Void doInBackground(Void... params) {
                //make request
                return null;
            }

            @Override
            protected void onPostExecute(Void aVoid) {
                super.onPostExecute(aVoid);
               // on completion 
                        finish();
            }
        };


    }
//像这样的 @凌驾 public void onBackPressed(){ 新建异步任务(){ @凌驾 受保护的Void doInBackground(Void…参数){ //请求 返回null; } @凌驾 受保护的void onPostExecute(void避免){ super.onPostExecute(避免); //完工时 完成(); } }; }
否,用户可以转到主屏幕离开应用程序,一段时间后系统将关闭我的应用程序,因此永远不能按下“后退”按钮。奇怪的是,设置单一启动警报不起作用,而WakefulIntentService.sendWakefulWork(MainContext,SaveStatService.class)在应用程序关闭几秒钟后启动了我的服务(这正是我试图用alarm manager所做的)。忘记将receiver添加到清单中,这就是alarm无法工作的原因