为了账号安全,请及时绑定邮箱和手机立即绑定

DatabaseHandler 中的 DatabaseHandler() 不能应用于

DatabaseHandler 中的 DatabaseHandler() 不能应用于

MMTTMM 2021-09-29 17:06:44
请试试这个:// the service classimport android.app.job.JobParameters;import android.app.job.JobService;import android.util.Log;/** * JobService to be scheduled by the JobScheduler. * start another service */public class mService extends JobService {    private static final String TAG = "SyncService";    @Override    public boolean onStartJob(JobParameters params) {        Log.d("TAG", "onStartJobb");        return true;    }    @Override    public boolean onStopJob(JobParameters params) {        Log.d("TAG", "onStopJob");        return true;    }}// in main activity@RequiresApi(api = Build.VERSION_CODES.N)public void onResume(){    super.onResume();    JobScheduler scheduler = getSystemService(JobScheduler.class);    if(scheduler.getPendingJob(1) == null) {        ComponentName componentName = new ComponentName(this, mService.class);        //JobInfo.Builder builder = new JobInfo.Builder(0, serviceComponent);        JobInfo.Builder info = new JobInfo.Builder(1, componentName)                .setRequiresCharging(false)                .setRequiredNetworkType(JobInfo.NETWORK_TYPE_UNMETERED)                .setPersisted(true)                .setMinimumLatency(1 * 1000)                .setOverrideDeadline(3 * 1000)                //.setPeriodic(60 * 60 * 1000)                //.build()                ;        int resultCode = scheduler.schedule(info.build());        if (resultCode == JobScheduler.RESULT_SUCCESS) {            Log.d("TAG", "Service is not running, Job " + String.valueOf(1) + " Scheduled.");        } else {            Log.d("TAG", "Service is not running, However job scheduling failed.");        }    } else{        Log.d("TAG", "Service is already scheduled.");    }}请注意,这里是Periodic min interval的限制,不幸的是15分钟,当我们把它设置得更小,SDK将其更改为15分钟,并将flex interval设置为5分钟,最终我们得到服务启动从作业的调度时间开始大约 7-8 分钟后。这就对了 )。这对我有用,
查看完整描述

2 回答

?
慕哥6287543

TA贡献1831条经验 获得超10个赞

解决方案:


取而代之的是:


public DatabaseHandler(Context context, String name, SQLiteDatabase.CursorFactory factory, int version, Context mContext) {

    super(context, DATABASE_NAME, null, DATABASE_VERSION);

    this.mContext = mContext;

}

写这个:


public DatabaseHandler(Context context) {

    super(context, DATABASE_NAME, null, DATABASE_VERSION);

    this.mContext = context;

}

在你的DatabaseHandler课堂上。


就是这样。


希望能帮助到你。


查看完整回答
反对 回复 2021-09-29
?
HUH函数

TA贡献1836条经验 获得超4个赞

构造函数是初始化新创建对象的代码块。构造函数类似于 Java 中的实例方法,但它不是方法,因为它没有返回类型。



 public DatabaseHandler(Context context, String name, SQLiteDatabase.CursorFactory factory, int version, Context mContext) {

        super(context, DATABASE_NAME, null, DATABASE_VERSION);

        this.mContext = mContext;

    }


public DatabaseHandler(Context context) {

        super(context, DATABASE_NAME, null, DATABASE_VERSION);

         this.mContext = mContext;

    }

然后下面的部分将起作用。


databaseHandler = new DatabaseHandler(context);


查看完整回答
反对 回复 2021-09-29
  • 2 回答
  • 0 关注
  • 229 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信