PIPI0 2016-01-19 01:00 采纳率: 85.7%
浏览 1844
已采纳

我一启动service就出现问题,应该是线程的问题,请问怎么解决


package com.s5c.Changlink;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;

import android.annotation.SuppressLint;
import android.app.Service;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Handler;
import android.os.IBinder;
import android.os.Message;
import android.widget.Toast;

@SuppressLint({ "SimpleDateFormat", "HandlerLeak" })
public class sqlService extends Service {

    SharedPreferences sp;
    String branch,mold,sql,id,Changelocation;
    Thread Change;
    Timer timer;
    Date molds;
    Date data=new Date(System.currentTimeMillis());
    SimpleDateFormat dateFormater = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    Connection conn = null;
    Statement stmt = null;
    ResultSet rs = null;
    Message message;

    public void onCreate() {
        super.onCreate();
    }

    public int onStartCommand(Intent intent, int flags, int startId) {

        sp =getSharedPreferences("User", MODE_PRIVATE);
        branch = sp.getString("branch", "");
        mold = sp.getString("mold", "");
        try {
            molds = dateFormater.parse(mold);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        if(molds.before(data)){
            timer.schedule(change, molds, 300000);////代码在这里出错,使程序崩溃
        }else{
            timer.schedule(change, 300000, 300000);
        }

        return super.onStartCommand(intent, flags, startId);
    }

    TimerTask change = new TimerTask(){
        public void run() {  
            message = new Message();      
            message.what = 1;      
            handler.sendMessage(message);    

        }  
    };

    Handler handler = new Handler(){  
        public void handleMessage(Message msg) {  
            switch (msg.what) {      
                case 1:
                    Toast.makeText(sqlService.this, "完全正常", Toast.LENGTH_LONG).show();
                    break;
            }      
            super.handleMessage(msg);  
        }    
    };

    public void onDestroy() {
        Toast.makeText(this, "您将取消服务", Toast.LENGTH_LONG).show();
        super.onDestroy();
    }

    public IBinder onBind(Intent intent) {
        return null;
    }

}


以上就是程序代码,我在造成崩溃的地方有标注,不明白为什么会造成程序崩溃

  • 写回答

10条回答 默认 最新

  • 江户川小南 2016-01-19 02:26
    关注

    你的Timer貌似没有创建。。只看到声明,没见到new

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
  • bdmh 移动开发领域优质创作者 2016-01-19 01:06
    关注

    看logcat中的具体错误提示,是不是timer=null了

    评论
  • tony4geek 2016-01-19 01:07
    关注

    你得看看具体log 信息啊

    评论
  • PIPI0 2016-01-19 01:23
    关注

    图片说明

    这就是错误提示,我看到有明显指向的位置就是我代码中提示的位置

    评论
  • 乐古 2016-01-19 01:50
    关注

    空引用异常,在控制台打印一下timer是不是没值

    评论
  • 把分全给哥 2016-01-19 02:39
    关注

    这个molds是不是为空

    评论
  • 业余草 科技数码领域优质创作者 2016-01-19 03:28
    关注

    log信息不是很全啊

    评论
  • 浅浅无奈 2016-01-19 03:45
    关注

    空指针异常,你直接在变量处设置断点用debug调试,专治各种空指针。

    评论
  • pgc_tel 2016-01-19 03:47
    关注

    molds这个值是空 没有new 或者没有给他赋值

    评论
  • 月盡天明 博客专家认证 2016-01-19 05:56
    关注

    空指针了。
    timer貌似是空的。

    评论
查看更多回答(9条)

报告相同问题?

悬赏问题

  • ¥15 eclipse无法正常运行
  • ¥15 定义了函数,但是无法根据函数定义触发器
  • ¥20 5变量卡诺图化简得出与非门电路图
  • ¥20 位置依赖的碱基序列独热编码
  • ¥15 Python爬取交通拥堵指数数据
  • ¥15 使用vba抓取重定向网页问题
  • ¥20 付费需求测试程序(细谈)。
  • ¥15 为什么这段c++代码会报这么多语法错误?
  • ¥20 如何利用C语言实现用最小二乘法选配两个经验公式
  • ¥50 vue-codemirror如何对指定行 指定位置的 字符进行背景颜色或者字体颜色的修改?