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

我想修改上述活动,以帮助它工作的背景,而用户播放与其他屏幕变通。

有什么想法?

希望它不是很混乱!如果您不了解上述任何情况,请告诉我。

在此先感谢!

回答

1

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

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

Service没有UI,它应该做的所有工作,在后台运行。 Activity可以向用户显示当前应用程序状态,该状态由Service更改/修改。例如,当Service完成他的工作时,它可以发送Notification。更多详情,请参阅this指南。

+0

服务有UI吗? – Renjith

+0

不,它不... – waqaslam

+0

所以如果我不能有活动,我怎么能显示用户界面? – Renjith

0

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

+0

的AsyncTask可以被系统终止,如果用户离开活动。对于长时间运行的后台操作,应该使用服务。 – HitOdessit