【问题标题】:Making activity runs in background使活动在后台运行
【发布时间】:2013-03-15 06:56:04
【问题描述】:

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

【问题讨论】:

  • 在 onPause() 方法中启动服务,在 onResume() 中停止。如果你想把一个 Activity 变成一个服务,你应该使用一个服务。
  • 然后写一个服务?
  • @RaghavSood 你能解释一下如何将我的活动变成服务
  • @JesbinMJ 你没有。你创建了一项新服务。

标签: android service android-service


【解决方案1】:

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

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

检查有关服务herehereIntentService 的android javadoc

这里是第三方Android Service Tutorial

编辑:您可能还需要在您的服务和您的活动之间进行通信,以便您可以通过它:Example: Communication between Activity and Service using Messaging

【讨论】:

  • 我经历过这个,但我没明白。如何将我的活动类绑定到服务类中
【解决方案2】:

如果您只是希望您的活动在后面运行,请尝试使用

moveTaskToBack(true);

【讨论】:

  • @user2208695 你能告诉我在哪里写这个
  • moveTaskToBack(true);而不是 Movetasktoback(true);
【解决方案3】:

您似乎想在活动退出时在后台运行它。但是,除非在前台,否则无法运行活动。

为了实现你想要的,在onPause()中,你应该启动一个服务来继续activity中的工作。单击后退按钮时将调用 onPause()。在 onPause 中,只需保存当前状态,并将作业转移到服务。当您的活动不在前台时,该服务将在后台运行。

当您稍后返回您的活动时,请在 onResume() 中执行一些操作以再次将服务的工作转移到您的活动。

【讨论】:

    【解决方案4】:

    您应该阅读有关 Threads 的开发人员指南: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);
        }
    }
    

    【讨论】:

    • 我不想让它成为一个线程..我只是想像服务一样在背景中运行它...我的活动包括电话管理器、广播接收器等,所以不需要把它变成一个线程
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-16
    相关资源
    最近更新 更多