Мой "JobIntentService" не работает хорошо в фоновом режиме - PullRequest
0 голосов
/ 04 ноября 2019

Когда я запускаю JobIntentService, он работает нормально, но после входа в спящий режим телефона через некоторое время приостанавливается. Когда я разблокирую свой телефон, он снова начинает работать.

Я хочу, чтобы долгое задание работало в фоновом режиме, оно не должно приостанавливаться или останавливаться.

Вот мой JobInteneService:

 public static void enqueueWork(Context context, Intent work) {
        enqueueWork(context, ExampleJob.class, 1, work);
    }

    @Override
    public void onCreate() {

        Log.d(TAG, "onCreate() called");
        super.onCreate();
    }


    @Override
    protected void onHandleWork(@NonNull Intent intent)
    {
        cancelRingtone = Uri.parse("android.resource://com.example.myapplication/" + R.raw.cancel);
        cancelAlarm = RingtoneManager.getRingtone(this, cancelRingtone);

        while(running)
        {
            cancelAlarm.play();
            try
            {
                Thread.sleep(60000);
            }
            catch (Exception e)
            {
                Log.i(TAG, "onHandleWork: "+e);
                running=false;
            }
        }
    }

    @Override
    public void onDestroy() {

        Log.d(TAG, "onDestroy() called");
        super.onDestroy();
    }

Вот MainActivity:

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        ActivityCompat.requestPermissions(this,new String[]{
                Manifest.permission.WAKE_LOCK
        }, 1);
    }

    public void click(View view)
    {
        Intent mIntent = new Intent(this, ExampleJob.class);
        ExampleJob.enqueueWork(this, mIntent);

    }

Вот AndroidManifest.xml:

<uses-permission android:name="android.permission.WAKE_LOCK"/>

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <service android:name=".ExampleJob"
            android:permission="android.permission.BIND_JOB_SERVICE"/>

    </application>

С этим кодом мой телефон будет воспроизводить звуковой сигнал каждую минуту. В режиме ожидания телефона я считаю до 6 звуковых сигналов за полчаса. Правильно ли я реализовал JobIntentService? Если JobIntentService не предназначен для этой работы, что еще я должен использовать?

...