Android 在scheduleAtFixedRate内启动活动时,应用程序崩溃

Android 在scheduleAtFixedRate内启动活动时,应用程序崩溃,android,Android,我正在制作一个简单的闹钟应用程序,现在我的服务出现了问题,它会检查当前时间是否与设置的时间匹配,并开始另一项活动。代码如下: @Override public int onStartCommand(Intent intent, int flags, int startID){ hourSet = intent.getIntExtra("hourSet", 0); minuteSet = intent.getIntExtra("minuteSet", 0); checkTi

我正在制作一个简单的闹钟应用程序,现在我的服务出现了问题,它会检查当前时间是否与设置的时间匹配,并开始另一项活动。代码如下:

@Override
public int onStartCommand(Intent intent, int flags, int startID){
    hourSet = intent.getIntExtra("hourSet", 0);
    minuteSet = intent.getIntExtra("minuteSet", 0);
    checkTime();
    return START_STICKY;
}

private void checkTime(){
    timer.scheduleAtFixedRate(new TimerTask() {         
        public void run() {
            time.setToNow();
            currentHour = time.hour;
            currentMinute = time.minute;

            if(currentHour == hourSet && currentMinute == minuteSet){
                Intent i = new Intent(AlarmService.this, AlarmTime.class);
                startActivity(i);
                cancel();
            }

        }
    }, 0, UPDATE_INTERVAL   );
}
我已经调试了服务,在发出
if
语句之前一切都很好。当当前时间与设置的时间匹配时,应用程序崩溃。
那么如何解决这个问题呢?

为什么人们不包括catLog?
问题是您正试图启动服务任务上的活动,这是不可能的,但若您添加了像
i.addFlags(Intent.FLAG\u ACTIVITY\u NEW\u TASK)


startActivity
调用之前,它会启动新任务,并且一切都应该正常:)

你能显示stacktrace吗?我认为你不能在线程内启动活动。你的应用程序将因非法状态异常而崩溃。您不能有后台线程控制UI操作。@Prateek*内部服务线程(不是活动线程)由于下面的家伙,我添加了I.addFlags(Intent.FLAG\u activity\u NEW\u TASK);它成功了。既然你提到Logcat,我想我还得学更多。几周前刚开始学习Android。不过还是谢谢你,谢谢。事实上,我完全是个新手。几周前刚开始学习。因此,对于任何愚蠢的错误,我们深表歉意:(不要抱歉,我们是来帮助您的:)Logcat只是android系统的日志,您可以在EclipseAndroid监视器中看到它的输出。如果我的回答有帮助,请点击绿色复选框接受它:)我试着使用它,我很惊讶它说的正是我必须做的。我一定会进一步调查的。再次感谢您,绿色支票已确认D