Java 如何从SQLiteOpenHelper类内部调用服务?
在安卓系统中,我需要在数据库查询之后立即启动一项服务,这样我就可以从应用程序中请求丢失的字节。我这样称呼它:Java 如何从SQLiteOpenHelper类内部调用服务?,java,android,intentservice,Java,Android,Intentservice,在安卓系统中,我需要在数据库查询之后立即启动一项服务,这样我就可以从应用程序中请求丢失的字节。我这样称呼它: 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); servi
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);
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);
}
}
我创建了另一个类作为服务调用方,因为我不能同时将我的类扩展到SQLiteOpenHelper和服务。我的课是这样的:
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);
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);
}
}
但是当我运行这段代码时,我在startServiceservice上得到一个NullPointerException。我做错了什么?是否有更好/正确的方法在数据库查询后调用服务
谢谢 我们从不在代码中创建服务对象。。您必须重新审视服务理念
AWS myCall = new AWS();// Bad Practice
如果它的业务需求是肯定的,我们可以这样做,并确保在单独的线程中运行服务代码,就像在调用它的同一线程中默认运行服务符文一样 是否有更好/正确的方法在数据库查询后调用服务?-让执行查询的人调用服务。问题是,查询可能会导致对服务的多次调用。我必须将所有丢失的字节存储在列表或哈希映射中。这不是服务中的问题。启动服务时,将始终调用名为onStartCommand的方法。如果您想避免这种情况,可以通过使用标志来控制,以了解服务是否已在运行。