请问我一启动service就出现问题,应该是线程的问题,如何解决 ?-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

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

2016-03-18 08:55:48 2482 1
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;
    }

}

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

SQL
取消 提交回答
全部回答(1)
  • 爵霸
    2019-07-17 19:05:47

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

    0 0
相关问答

1

回答

Service Mesh的本质是什么?

2022-05-10 14:00:38 57浏览量 回答数 1

1

回答

基于Service Worker的小程序启动流程是有哪些?

2022-04-18 10:55:09 143浏览量 回答数 1

1

回答

Service是什么?

2022-03-28 23:22:20 182浏览量 回答数 1

0

回答

请问java中该如何对netty Reactor线程数进行性能优化?

2021-11-07 08:46:46 83浏览量 回答数 0

1

回答

请问,应该如何开发一个Service Broker?

2020-11-25 13:43:20 259浏览量 回答数 1

1

回答

linux中service中重新加载和重新启动的区别?

2017-11-30 18:59:45 2436浏览量 回答数 1

1

回答

java如何调用.net发布 的WebService

2016-06-12 18:07:41 3299浏览量 回答数 1

1

回答

java如何请求远程的servlet 的post 请求

2016-02-21 15:42:58 2324浏览量 回答数 1

1

回答

webservice时间转换问题

2016-02-20 15:41:15 1798浏览量 回答数 1

2

回答

webservice需要备案吗

2014-08-24 16:08:02 6292浏览量 回答数 2
+关注
2
文章
9426
问答
问答排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载