package zhang.phil;import android.content.Context;import android.content.Intent;import android.os.Handler;import android.os.SystemClock;import android.util.Log;import android.widget.Toast;import androidx.core.app.JobIntentService;public class DemoService extends JobIntentService {    public static final String TAG = "后台服务";    private final static int jobId = 0xa001;    @Override    public void onCreate() {        super.onCreate();        Log.d(TAG, "onCreate");    }    public static void enqueueWork(Context context, Intent work) {        enqueueWork(context, DemoService.class, jobId, work);    }    @Override    protected void onHandleWork(Intent intent) {        String s = intent.getStringExtra(TAG);        for (int i = 0; i < 3; i++) {            SystemClock.sleep(5000);            Log.d(TAG, Thread.currentThread().getId()+":"+s + "->" + i);        }        toast("任务结束");    }    @Override    public void onDestroy() {        super.onDestroy();        Log.d(TAG, "onDestroy");    }    private final Handler mHandler = new Handler();    private void toast(final CharSequence text) {        mHandler.post(new Runnable() {            @Override            public void run() {                Toast.makeText(DemoService.this, text, Toast.LENGTH_SHORT).show();            }        });    }}

需要在Androidmanifest.xml定义服务:

上层使用:

package zhang.phil;import androidx.appcompat.app.AppCompatActivity;import android.content.Intent;import android.os.Bundle;import android.util.Log;public class MainActivity extends AppCompatActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        Log.d(DemoService.TAG, Thread.currentThread().getId() + ",MainActivity线程id");        Intent intent = new Intent();        intent.putExtra(DemoService.TAG, "zhangphil");        DemoService.enqueueWork(this, intent);    }    @Override    protected void onDestroy() {        super.onDestroy();        Log.d(DemoService.TAG, "onDestroy,MainActivity");    }}

 

 

《Android JobScheduler 、JobScheduler》https://blog.csdn.net/zhangphil/article/details/97403956

 

《Android任务调度JobScheduler,JobService》https://blog.csdn.net/zhangphil/article/details/93621525

更多相关文章

  1. 修改android公共控件和后台服务
  2. Android 后台Service : 向服务器发送心跳包
  3. Android异步处理系列文章四篇之一使用Thread+Handler实现非UI线
  4. 你对进程线程到底理解有多少
  5. C# 多线程--线程池的详细介绍
  6. C#中多线程之Thread类详解
  7. C#线程控制的实例详解
  8. 使用ConcurrentDictionary多线程同步字典集合实例详解
  9. 关于.NET后台定时服务框架的简单介绍

随机推荐

  1. 将STR_TO_DATE格式化为日期
  2. php扫马、内网查mysql数据库账号密码(内网
  3. PHP常量PHP_SAPI与函数php_sapi_name()简
  4. php环境中的ini配置
  5. php 多进程 父进程的阻塞与非阻塞
  6. php 发送http post请求
  7. Apache 2.2.19 + PHP5.2.17配置问题,请高
  8. Pubsub与Node.js和Socket.io为个人用户
  9. 从函数返回2个值[duplicate]
  10. 如何使用用户名作为子域名创建子域?