使活动在后台运行

时间:2013-03-25 17:12:24

标签: android service android-service

我是android的新手,我不太了解services.i有一个带有UI的活动类,我想让这个活动类在后台运行,当我点击后退按钮时。如何使我的活动像服务一样在后台运行,PLZ帮助我..

4 个答案:

答案 0 :(得分:5)

如果您只想让您的活动在后面运行,请尝试使用

Movetasktoback(true);

答案 1 :(得分:4)

你无法真正在后台运行Activity!当活动不在前台时,它会到达onStop,然后系统可以通过onDestroy方法终止它,以释放资源!见Activity Lifecycle

要在后台运行,您需要创建ServiceIntentService

结帐有关服务herehereIntentService

的机器人javadoc

这是第三方Android Service Tutorial

修改:您可能还需要在服务和活动之间进行通信,以便完成以下操作: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);
    }
}