Android 在后台运行活动

Android 在后台运行活动,android,android-layout,android-asynctask,android-activity,android-tabhost,Android,Android Layout,Android Asynctask,Android Activity,Android Tabhost,我只是想知道我是否能收集到一些建设性的意见。嗯,我正在开发一个选项卡式应用程序,每个选项卡和相关子活动都有一个活动组。其中一个活动处理文件下载程序—在后台开始接收下载后,等待来自服务器的下载链接。完成后,文件(大部分为PDF)将在通用查看器中打开。这部分非常好用 现在,谈到应用程序要求,我希望活动在后台运行。当用户处于下载页面时,将显示一个进度对话框,其中包含必要的消息。用户决定切换到其他屏幕后,移动到其他屏幕。实际上,downloader活动应该在后台运行 典型的下载活动类如下所示: pub

我只是想知道我是否能收集到一些建设性的意见。嗯,我正在开发一个选项卡式应用程序,每个选项卡和相关子活动都有一个活动组。其中一个活动处理文件下载程序—在后台开始接收下载后,等待来自服务器的下载链接。完成后,文件(大部分为PDF)将在通用查看器中打开。这部分非常好用

现在,谈到应用程序要求,我希望活动在后台运行。当用户处于下载页面时,将显示一个进度对话框,其中包含必要的消息。用户决定切换到其他屏幕后,移动到其他屏幕。实际上,downloader活动应该在后台运行

典型的下载活动类如下所示:

 public class DownloadActivity extends Activity {
    public void onCreate(Bundle state) { //code here}
    public void onPause() {//can anything be done here?}
    public boolean onKeyUp(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK) {
           //go back to previous screens to check other features
           TabGroupActivity parentActivity = (TabGroupActivity)getParent();
           //onBackPressed()- current activity is killed and new one is created
           parentActivity.onBackPressed();
           return true;
        }
        return super.onKeyUp(keyCode, event);
    }
 }
我想修改上面的活动,以帮助它在后台工作,而用户在其他屏幕上玩

有什么想法吗

希望不是很混乱!如果你不明白以上任何一点,请告诉我


提前谢谢

活动
不能也不应该在后台工作。对于Android中的后台操作,您应该使用

有一篇关于Android的文章


服务
没有UI,它应该在后台完成所有工作<代码>活动可以向用户显示当前应用程序状态,该状态由
服务
更改/修改。例如,当
服务
完成他的工作时,它可以发送
通知
。更多详细信息请参见指南。

您可以将AsyncTask子类化(http://developer.android.com/reference/android/os/AsyncTask.html)通过它,您可以在后台执行一些工作,并通过处理程序将其发布到当前活动

如果用户离开活动,则系统可以终止AsyncTask。对于长时间运行的后台操作,应该使用服务。首先,尝试阅读开发人员指南(我在回答中提供了一个链接),仅仅为了理解Android组件生命周期的基本概念,我理解服务是目前最好的选择!然而,有一个简单的问题。设置了一个使用消息处理程序启动服务的活动后,如果该活动被终止,会发生什么情况?目前,由于绑定活动已不存在,所以服务没有回调。系统可以终止活动,但您的服务将保持活动状态并继续它的工作。当服务完成它的工作时,它可以向用户发送通知,例如,我已经更新了我的答案,添加了关于服务和通知的开发者指南的链接。请注意!谢谢你。现在我有了突破。我从服务开始建设。