0

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

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

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

 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);
    }
 }

我想修改上述活动以帮助它在用户玩其他屏幕时在后台工作。

有什么想法吗?

希望它不是很混乱!如果您不理解上述任何内容,请告诉我。

提前致谢!

4

2 回答 2

1

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

有一篇关于 Android进程和服务的文章。

Service没有 UI,它应该在后台完成所有工作。Activity可以向用户显示当前应用程序状态,由 . 更改/修改Service。完成Service他的工作后,它可以发送一个Notification,例如。指南中的更多详细信息。

于 2012-10-10T13:25:04.917 回答
0

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

于 2012-10-10T13:30:55.613 回答