我是android的新手,我不太了解services.i有一个带有UI的活动类,我想让这个活动类在后台运行,当我点击后退按钮时。如何使我的活动像服务一样在后台运行,PLZ帮助我..
答案 0 :(得分:5)
如果您只想让您的活动在后面运行,请尝试使用
Movetasktoback(true);
答案 1 :(得分:4)
你无法真正在后台运行Activity
!当活动不在前台时,它会到达onStop
,然后系统可以通过onDestroy
方法终止它,以释放资源!见Activity Lifecycle
要在后台运行,您需要创建Service
或IntentService
结帐有关服务here和here或IntentService
修改:您可能还需要在服务和活动之间进行通信,以便完成以下操作:Example: Communication between Activity and Service using Messaging
答案 2 :(得分:0)
好像你想在退出时在后台运行一个活动。但是,除非它位于前台,否则无法运行活动。
为了实现你想要的,在onPause()中,你应该启动一个服务来继续活动中的工作。单击后退按钮时将调用onPause()。在onPause中,只需保存当前状态,然后将作业传输到服务。当您的活动不在前台时,该服务将在后台运行。
当您稍后返回活动时,请在onResume()中执行某些操作,将服务的作业再次转移到您的活动中。
答案 3 :(得分:-2)
您应该阅读有关主题的开发人员指南:http://developer.android.com/guide/components/processes-and-threads.html
具体是函数doInBackground() 页面示例:
public void onClick(View v) {
new DownloadImageTask().execute("http://example.com/image.png");
}
private class DownloadImageTask extends AsyncTask<String, Void, Bitmap> {
/** The system calls this to perform work in a worker thread and
* delivers it the parameters given to AsyncTask.execute() */
protected Bitmap doInBackground(String... urls) {
return loadImageFromNetwork(urls[0]);
}
/** The system calls this to perform work in the UI thread and delivers
* the result from doInBackground() */
protected void onPostExecute(Bitmap result) {
mImageView.setImageBitmap(result);
}
}