我的“ JobIntentService”在后台运行不正常

时间:2019-11-03 21:00:15

标签: android background-task jobintentservice

当我启动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用于该工作,我还应该使用什么?

0 个答案:

没有答案