web-dev-qa-db-ja.com

ユーザー出口アプリの後でバックグラウンドサービスを維持する

ユーザーが実行中のプロセスメニューからアプリを閉じた後でも(プロセスを画面からシフトして)バックグラウンドジョブを実行するサービスを作成しようとしています。

私がやろうとしたのは、次のように宣言して、別のプロセスでサービスを作成することです。

  <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;
}
13
Nativ

Androidドキュメント によると、次の属性を使用してこの動作を実現できます。

 Android:isolatedProcess="true"

ちなみに、この質問には答えていませんが、一部の人にも役立つかもしれません。最近、Evernote開発者が作成した優れたサードパーティのlibについて知りました。その名前は Android-Job であり、その目的は、さまざまなプロセスで実行され、デバイスの再起動後でも再びアクティブになることができるジョブを作成することです。

9
Nativ

実際に実装できるサービスにはさまざまな種類があります。 IntentServiceの代わりにサービスを使用します。 START_STICKYSTART_NOT_STICKYSTART_REDELIVER_INTENTを確認する必要があります。アクティビティが停止した場合でも、サービスをバックグラウンドで実行し続けることができます。 AndroidサービスAIDLサービスもご覧ください

このために、ハンドラと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 

}
0