我需要从服务器中调用一个方法来打开内部android数据库的连接,使用的下面的代码:
public class myService extends Service{
public void setDB(DB_DatabaseManager db){
dbManager = db;
}
public DB_DatabaseManager dbManager;
private Timer timer;
public IBinder onBind(Intent intent){
return null;
}
public void onCreate(){
super.onCreate();
Log.i("my attempt","service activated");
TimerTask task = new TimerTask(){
public void run(){
Log.i("my attempt","ANDROID SERVICE RUNNING!");
dbManager.open(); // <--this statement generates error!
// --- in this section I start the communication with database
}
};
timer = new Timer();
timer.schedule(task, 0, 20000);
}
public void onDestroy(){
super.onDestroy();
timer.cancel();
timer = null;
Log.i("my attampt", "service stopped");
}
open() 定义为:
SQLiteDatabase mDb=mDbHelper.getWritableDatabase();
为了调用服务器,我使用:
myService serv = new myService();
serv.setDB(dbManager);
startService(new Intent(this,myService.class));
如果我删除dbManager.open(); 行,能正常运行,但是dbManager.open()方法在我代码的其它部分都能运行。但是在下面的情形中在logcat中获得下面的错误:
08-06 23:44:32.287: E/AndroidRuntime(1115): FATAL EXCEPTION: Timer-0
08-06 23:44:32.287: E/AndroidRuntime(1115): java.lang.NullPointerException
08-06 23:44:32.287: E/AndroidRuntime(1115): at host.framework.myService$1.run(myService.java:49)
08-06 23:44:32.287: E/AndroidRuntime(1115): at java.util.Timer$TimerImpl.run(Timer.java:284)
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。