Когда я запускаю 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
не предназначен для этой работы, что еще я должен использовать?