14

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

我试图做的是通过像这样声明它在不同的过程中创建服务:

  <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

4 回答 4

9

根据Android 文档,您可以通过使用以下属性来实现此行为:

 android:isolatedProcess="true"

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

于 2016-05-19T08:08:16.780 回答
1

实际上,您可以实现不同种类的服务。使用服务而不是IntentService. 您需要查看START_STICKY,即使您的活动终止,您也可以让您的服务在后台运行START_NOT_STICKYAndroid服务也看服务START_REDELIVER_INTENTAIDL

于 2014-02-14T07:22:50.490 回答
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();
    }

这个任务连续运行3min

public void TASK()
{
     //your task 

}
于 2017-04-07T06:44:22.883 回答
-8

服务被设计为在后台运行,不需要不同的进程。

从服务文档:

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

但是,该服务应该在其工作完成后自行停止。IntentService是开始实现服务的最简单方法。

于 2013-07-21T08:34:18.557 回答