Android 在后台运行活动
我只是想知道我是否能收集到一些建设性的意见。嗯,我正在开发一个选项卡式应用程序,每个选项卡和相关子活动都有一个活动组。其中一个活动处理文件下载程序—在后台开始接收下载后,等待来自服务器的下载链接。完成后,文件(大部分为PDF)将在通用查看器中打开。这部分非常好用 现在,谈到应用程序要求,我希望活动在后台运行。当用户处于下载页面时,将显示一个进度对话框,其中包含必要的消息。用户决定切换到其他屏幕后,移动到其他屏幕。实际上,downloader活动应该在后台运行 典型的下载活动类如下所示:Android 在后台运行活动,android,android-layout,android-asynctask,android-activity,android-tabhost,Android,Android Layout,Android Asynctask,Android Activity,Android Tabhost,我只是想知道我是否能收集到一些建设性的意见。嗯,我正在开发一个选项卡式应用程序,每个选项卡和相关子活动都有一个活动组。其中一个活动处理文件下载程序—在后台开始接收下载后,等待来自服务器的下载链接。完成后,文件(大部分为PDF)将在通用查看器中打开。这部分非常好用 现在,谈到应用程序要求,我希望活动在后台运行。当用户处于下载页面时,将显示一个进度对话框,其中包含必要的消息。用户决定切换到其他屏幕后,移动到其他屏幕。实际上,downloader活动应该在后台运行 典型的下载活动类如下所示: pub
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组件生命周期的基本概念,我理解服务是目前最好的选择!然而,有一个简单的问题。设置了一个使用消息处理程序启动服务的活动后,如果该活动被终止,会发生什么情况?目前,由于绑定活动已不存在,所以服务没有回调。系统可以终止活动,但您的服务将保持活动状态并继续它的工作。当服务完成它的工作时,它可以向用户发送通知,例如,我已经更新了我的答案,添加了关于服务和通知的开发者指南的链接。请注意!谢谢你。现在我有了突破。我从服务开始建设。