Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.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
Android 在线事务:异步任务与服务_Android_Android Asynctask_Android Service - Fatal编程技术网

Android 在线事务:异步任务与服务

Android 在线事务:异步任务与服务,android,android-asynctask,android-service,Android,Android Asynctask,Android Service,给定用户必须使用应用程序执行在线交易(如在线支付)的用例 这应该在不阻塞UI的情况下完成,所以我打算使用AsyncTask。问题在于以下场景: -用户转动电话或在转换过程中收到来电,从而导致活动被破坏。p> 如果我理解正确,asynctask现在有一个对过时对象的引用。因此,在事务完成后,无法将结果通知用户。是吗 您应该使用服务来代替吗 关于服务类的大多数困惑实际上围绕着它不是什么: 服务不是一个单独的进程。服务对象本身并不意味着它正在自己的进程中运行;除非另有规定,否则它与它所属的应用程序在

给定用户必须使用应用程序执行在线交易(如在线支付)的用例

这应该在不阻塞UI的情况下完成,所以我打算使用AsyncTask。问题在于以下场景: -用户转动电话或在转换过程中收到来电,从而导致活动被破坏。p> 如果我理解正确,asynctask现在有一个对过时对象的引用。因此,在事务完成后,无法将结果通知用户。是吗

您应该使用服务来代替吗

关于服务类的大多数困惑实际上围绕着它不是什么:

  • 服务不是一个单独的进程。服务对象本身并不意味着它正在自己的进程中运行;除非另有规定,否则它与它所属的应用程序在同一进程中运行
  • 服务不是线程。它本身并不是一种脱离主线程工作的方法(以避免应用程序不响应错误)
服务只是一个组件,即使用户没有与应用程序交互,它也可以在后台运行。因此,只有当您需要服务时,才应该创建服务

如果您需要在主线程之外执行工作,但仅在用户与应用程序交互时执行,那么您可能应该创建一个新线程而不是服务。例如,如果您想播放一些音乐,但只能在活动运行时播放,您可以在onCreate()中创建一个线程,在onStart()中开始运行它,然后在onStop()中停止它。还考虑使用AsYcTaskor或HANDLE线程,而不是传统的线程类。有关线程的更多信息,请参阅进程和线程文档

请记住,如果您确实使用服务,默认情况下它仍在应用程序的主线程中运行,因此如果服务执行密集或阻塞操作,您仍应在服务中创建新线程

如果设备的配置(由Resources.configuration类定义)发生更改,则显示用户界面的任何内容都需要更新以匹配该配置。因为活动是与用户交互的主要机制,所以它包括处理配置更改的特殊支持

除非您另有指定,否则配置更改(如屏幕方向、语言、输入设备等的更改)将导致当前活动被销毁,并根据需要执行onPause()、onStop()和onDestroy()的正常活动生命周期过程。如果活动位于前台或对用户可见,则在该实例中调用onDestroy()后,将创建该活动的新实例,并使用先前实例从onSaveInstanceState(Bundle)生成的任何savedInstanceState

在某些特殊情况下,您可能希望基于一种或多种类型的配置更改绕过活动的重新启动。这是通过清单中的android:configChanges属性完成的。对于您所说要在此处处理的任何类型的配置更改,您将收到对当前活动的onConfigurationChanged(配置)方法的调用,而不是重新启动。但是,如果配置更改涉及任何您不处理的内容,则活动仍将重新启动,并且不会调用onConfigurationChanged(配置)


只要在谷歌上搜索一下,你就会看到这么多的结果,其中前3条来自so本身:@VirenShakya我已经读过这些帖子,但没有一条让我头脑清醒。例如,被接受的答案甚至不是所有评论者都接受的。我仍然不确定解决办法。