ユーザーが実行中のプロセスメニューからアプリを閉じた後でも(プロセスを画面からシフトして)バックグラウンドジョブを実行するサービスを作成しようとしています。
私がやろうとしたのは、次のように宣言して、別のプロセスでサービスを作成することです。
<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;
}
Androidドキュメント によると、次の属性を使用してこの動作を実現できます。
Android:isolatedProcess="true"
ちなみに、この質問には答えていませんが、一部の人にも役立つかもしれません。最近、Evernote開発者が作成した優れたサードパーティのlibについて知りました。その名前は Android-Job であり、その目的は、さまざまなプロセスで実行され、デバイスの再起動後でも再びアクティブになることができるジョブを作成することです。
実際に実装できるサービスにはさまざまな種類があります。 IntentService
の代わりにサービスを使用します。 START_STICKY
、START_NOT_STICKY
、START_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
}