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