当我使用intentService保存数据时,为什么我的应用程序崩溃?

时间:2015-04-18 12:20:40

标签: android android-asynctask android-intentservice

我正在尝试将一些数据从文件保存到数据库。没有使用intentService,一切都很好。但是,当我使用IntentService时,我的应用程序崩溃,并且我的asyncTask出现错误:

java.lang.RuntimeException: An error occured while executing doInBackground()
Caused by: java.lang.NullPointerException
at com.example.carl.myTest.AsyncTask.doInBackground(AsyncTask.java:44)

,第44行是:HttpResponse response = httpClient.execute(httpPost);

我的问题是为什么没有服务一切都很好,使用后一切都很混乱?!!!出了什么问题? - 非常感谢任何帮助。我展示了我的intentService类:

 public class TheIntentService extends IntentService {

        MainActivityMyTest t = new MainActivityMyTest ();
        private Handler handler = new Handler();

        public MyIntentService() {
            super("TheIntentService ");
        }

        @Override
        protected void onHandleIntent(Intent intent) {
            t.writeToTable();
            handler.post(showResult);
        }

        private Runnable showResult = new Runnable() {
            public void run() {
                Context c = TheIntentService .this.getApplicationContext();
                Toast.makeText(c, "Mission accomplished", Toast.LENGTH_SHORT).show();
            }
        };

        @Override
        public void onDestroy() {
            Context c = this.getApplicationContext();
            Toast.makeText(c, "Exits service", Toast.LENGTH_SHORT).show();
            super.onDestroy();
        }
}

从MainActivity我开始这样的服务:

Intent i = new Intent(MainActivityMyTest.this, TheIntentService.class);
            startService(i);

1 个答案:

答案 0 :(得分:1)

  

为什么没有服务一切都很好,使用后一切都很混乱?!!!

因为您创建了自己的MainActivityMyTest实例,该实例似乎是Activity从不自己创建ActivityServiceContentProvider的实例。 Android的框架创建了那些,而不是你。据推测,MainActivityMyTest在其生命周期的某个位置(例如httpclient)会创建onCreate(),但这种情况并未发生。

请将与writeToTable()相关联的代码移至IntentService本身。