用户退出应用程序后保持后台服务活动

时间:2013-07-20 23:45:57

标签: android service android-service background-service

即使用户从正在运行的进程菜单中关闭应用程序(通过将进程移出屏幕),我也正在尝试创建一个可以为我做后台作业的服务。

我尝试做的是通过声明这样的方式在不同的过程中创建服务:

  <service
        android:name=".service.Service"
        android:enabled="true"
        android:icon="@drawable/ic_launcher"
        android:process=":my_process" >
  </service>

和onStartCommand()是:

    @Override
public int onStartCommand(Intent intent, int flags, int startId) {
    return START_STICKY;
}

4 个答案:

答案 0 :(得分:6)

根据Android documentation,您可以使用以下属性实现此行为:

app.controller('myctrl', function($scope) {
  $scope.colors = [
    '#36342a',
    '#4f48d5',
    '#03bbbb',
    '#3eb308',
    '#f0d817',
    '#dd3333'
  ];
  $scope.selectedRow = 0; // initialize our variable to null
  $scope.setClickedRow = function(index) { //function that sets the value of selectedRow to current index
    $scope.selectedRow = index;
  }
});

顺便说一句,我知道它没有回答这个问题,但它也可能对某些人有所帮助 - 最近,我发现了Evernote开发人员创建的一个很棒的第三方库。它的名称是Android-Job,其目的是创建在不同进程上运行的作业,即使在设备重启后也可以再次激活,这太棒了。

答案 1 :(得分:1)

实际上,您可以实施不同类型的服务。使用服务代替IntentService。在那里,您需要查看START_STICKYSTART_NOT_STICKYSTART_REDELIVER_INTENT,即使您的活动已经停止,您也可以在后台运行您的服务。 Android services也会查看AIDL服务

答案 2 :(得分:0)

为此,您可以使用Handler和Runnable类

   @Override
    public void onCreate()
    {

        Toast.makeText(context, "SMS SERVICE START", Toast.LENGTH_SHORT).show();


        handler=new Handler();
        runnable=new Runnable() {
            @Override
            public void run()
            {

                    TASK();
                    handler.postDelayed(runnable,180000);
// 3min delay
            }
        };

        handler.postDelayed(runnable,180000);
        super.onCreate();
    }

此任务连续运行3分钟

public void TASK()
{
     //your task 

}

答案 3 :(得分:-8)

服务旨在在后台运行,无需其他流程。

来自服务文档:

  

一旦启动,即使启动它的组件被破坏,服务也可以无限期地在后台运行。

但是,当它的工作完成时,服务应该停止。 IntentService是开始实施服务的最简单方法。