在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。我究竟做错了什么?在数据库查询后调用服务有更好/更正确的方法吗?
谢谢!
答案 0 :(得分:0)
我们永远不会在代码中创建服务对象。您必须重新访问服务概念..
AWS myCall = new AWS();// Bad Practice
如果它的业务需求是,我们可以这样做,并确保在单独的线程中运行服务代码,因为默认服务符文在调用它的同一个线程中。