只是想知道我是否可以收集一些建设性意见。好吧,我正在开发一个带有活动组的选项卡式应用程序,用于每个选项卡和相关的子活动。其中一个活动处理文件下载程序 - 一旦从后台开始下载,就等待来自服务器的下载链接。完成后,文件(主要是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);
}
}
我想修改上述活动,以帮助用户在其他屏幕上玩游戏时使用背景。
有什么想法吗?
希望它不是很混乱!如果您不了解上述任何内容,请与我联系。
提前致谢!
答案 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),通过它可以在后台完成一些工作,并通过处理程序将其发布到当前活动。