为什么当android系统调用startCommand()时,Logcat不会打印消息?

时间:2013-04-14 19:49:32

标签: android android-emulator android-service

我编写了一个简单的代码来检查服务的使用。

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

    Log.d("msg","Service Started");

    if(intent == null)
    Log.w("msg","Service Intent NULL");

    g = (GlobalVar) getApplicationContext();

    try {
        Thread thread = new Thread(new Job());
        thread.start();

    } catch (Exception ex) {
        Log.e("msg", ex.getMessage());
    }

    return START_STICKY;
}

我的活动中有两个按钮。 一个按钮使用 startService(意图意图)方法启动服务,另一个按钮使用 stopService(意图意图)方法停止服务。 1.我按下了startButton,并在Logcat中打印了msg Service Started 。这次Intent不会为null。 2.现在,我转到模拟器的设置>应用程序>运行服务并找到我的服务并停止它。 msg 服务已停止打印在Logcat中,我已在服务的 onDestroy()方法中编写。

这是我不理解的部分。

Android系统会在几秒钟后重新启动服务,这次不打印msg 服务启动。文档声明intent将为null。但是msg Service Intent NULL 也不会被打印。

我怎么知道android系统重启服务?

我在线程中打印了一些我的服务启动的消息。在从仿真器设置停止服务几秒钟后,这些msgs会自动开始在logcat中打印。

为什么没有打印这些LogCat消息的想法?

1 个答案:

答案 0 :(得分:0)

我猜你应该对下面的这些问题有一些基本的了解....

Log.e:这是为了发生坏事。在catch语句中使用此标记。您知道并且发生了错误,因此您正在记录错误。

Log.w:当你怀疑有阴影的时候使用它。您可能无法在错误模式下完全完整,但也许您从某些意外行为中恢复过来。基本上,使用它来记录您不希望发生的事情,但不一定是错误。有点像“嘿,这发生了,这很奇怪,我们应该调查一下。”

Log.i:使用此命令将有用信息发布到日志中。例如:您已成功连接到服务器。基本上用它来报告成功。

Log.d:用于调试目的。如果要打印出大量消息,以便记录程序的确切流程,请使用此方法。如果要保留变量值的日志,请使用此。

Log.v:当您想要完全记录日志时,请使用此选项。如果由于某种原因您决定在应用程序的特定部分记录每个小东西,请使用Log.v标记。 并参考此Here

我相信这会帮助你...谢谢...