JobIntentService не удаляет поток после завершения, как IntentService

У меня есть JobIntentService из официального документа:

public class SimpleJobIntentService extends JobIntentService {

    static final int JOB_ID = 1000;

    static void enqueueWork(Context context, Intent work) {
        enqueueWork(context, SimpleJobIntentService.class, JOB_ID, work);
    }

    @Override
    protected void onHandleWork(Intent intent) {
        // We have received work to do.  The system or framework is already
        // holding a wake lock for us at this point, so we can just go.
        Log.i("SimpleJobIntentService", "Executing work: " + intent);
        String label = intent.getStringExtra("label");
        if (label == null) {
            label = intent.toString();
        }
        toast("Executing: " + label);
        for (int i = 0; i < 5; i++) {
            Log.i("SimpleJobIntentService", "Running service " + (i + 1)
                    + "/5 @ " + SystemClock.elapsedRealtime());
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
            }
        }
        Log.i("SimpleJobIntentService", "Completed service @ " + SystemClock.elapsedRealtime());
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        toast("All work complete");
    }

    final Handler mHandler = new Handler();

    // Helper for showing tests
    void toast(final CharSequence text) {
        mHandler.post(new Runnable() {
            @Override public void run() {
                Toast.makeText(SimpleJobIntentService.this, text, Toast.LENGTH_SHORT).show();
            }
        });
    }
}

Перед запуском этого сервиса, после звонка Thread.activeCount() Я получил номер 33. После окончания первого запуска службы я получил 34, следующие 35 и так далее.
Зачем? Кто-то может мне объяснить? Как убить эту ветку после окончания? Это нормальное поведение JobIntentService? IntentService работает идеально, всегда завершает поток после завершения.

Я запускаю этот сервис из фрагмента, используя:

Intent intent = new Intent(getActivity(), SimpleJobIntentService.class);
SimpleJobIntentService.enqueueWork(getActivity(), intent);

во всяком случае, если я запустил службу таким образом:

getActivity().startService(new Intent(getActivity(), SimpleJobIntentService.class));

JobIntentService также не удаляет поток

0 ответов

Другие вопросы по тегам