在后台运行活动

时间:2012-10-10 13:20:26

标签: android android-layout android-asynctask android-activity android-tabhost

只是想知道我是否可以收集一些建设性意见。好吧,我正在开发一个带有活动组的选项卡式应用程序,用于每个选项卡和相关的子活动。其中一个活动处理文件下载程序 - 一旦从后台开始下载,就等待来自服务器的下载链接。完成后,文件(主要是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);
    }
 }

我想修改上述活动,以帮助用户在其他屏幕上玩游戏时使用背景。

有什么想法吗?

希望它不是很混乱!如果您不了解上述任何内容,请与我联系。

提前致谢!

2 个答案:

答案 0 :(得分:1)

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

有一篇关于Android processes and services的文章。

Service没有UI,它应该在后台完成所有工作。 Activity可以向用户显示当前应用程序状态,由Service更改/修改。 Service完成工作后,可以发送Notification。有关详细信息,请参阅this指南。

答案 1 :(得分:0)

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