如何从SQLiteOpenHelper类中调用服务?

时间:2014-11-17 12:54:15

标签: java android intentservice

在Android中,我需要在数据库查询后启动imediatlly服务,这样我才能从应用程序请求丢失的字节。我这样称呼它:

Intent service = new Intent("br.com.company.intent.DO_CHUNK_REQUEST");
service.putExtra("FIELD_NAME", fieldName);
service.putExtra("JOB_NAME", jobName);
service.putExtra("START_BYTE", 500);
service.putExtra("LENGTH", 100);
AWS myCall = new AWS();
myCall.chama_servico(service);

我创建了另一个类作为"服务调用者",因为我无法同时将我的类扩展到SQLiteOpenHelper和Service。我的班级是这样的:

package br.com.company.AWService;

import android.app.Service;
import android.content.Intent;
import android.os.IBinder;

public class AWS extends Service {
    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }

    public void chama_servico (Intent service) {
        startService(service);
    }
}

但是当我运行这段代码时,我在startService(service)上得到一个NullPointerException。我究竟做错了什么?在数据库查询后调用服务有更好/更正确的方法吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

我们永远不会在代码中创建服务对象。您必须重新访问服务概念..

AWS myCall = new AWS();// Bad Practice

如果它的业务需求是,我们可以这样做,并确保在单独的线程中运行服务代码,因为默认服务符文在调用它的同一个线程中。