1

編集:この質問のより研ぎ澄まされたバージョンは、良い答えがあります:ログのかなり奇妙な振る舞い

編集:(奇妙な)解決策は以下の答えとして報告されています。

私は、アプリケーションの一部として、適度に実行されているサービスを持っていますが、理解しようとしている異常な動作があります。これを行うために、クラスのさまざまなメソッドにLog.dステートメントを配置して、さまざまなポイントで状態情報を報告しています。Serviceクラスのものを除いて、これらはすべて機能している(つまり、情報を報告している)ようです。(a)何かを実行し、(b)インスタンス化するスレッドがLog.dメッセージを発行しているため、サービスが開始されていることを知っています。ただし、最初から次のようになります。

@Override
public void onCreate() {
    super.onCreate();
    Log.d("SMS", "onCreate()");
    onCreateReal();
}

このログメッセージは表示されません。私は何を間違っているのでしょうか?

マニフェストは次のとおりです。

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.stuff.myapp"
android:versionCode="1111111"
android:versionName="0.1" >

<uses-sdk
    android:minSdkVersion="8"
    android:targetSdkVersion="16" />
<uses-permission android:name="android.permission.INTERNET"/>

<application
    android:allowBackup="true"
    android:icon="@drawable/icon"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >

    <activity
        android:name="com.stuff.myapp.Core"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

    <service android:name="MyService"></service>

    <receiver android:name="com.stuff.myapp.WidgetInitiator">
        <intent-filter>
            <action android:name="android.appwidget.action.APPWIDGET_UPDATE"/>
        </intent-filter>
        <meta-data android:name="android.appwidget.provider" android:resource="@xml/widget_information"/>
    </receiver>

    <activity android:name="com.stuff.myapp.ConfigWidgetActivity"
         android:theme="@android:style/Theme.Translucent">
    </activity>
</application>

[編集:別の観察]アプリの一部として、2分ごとにBroadcastReceiverクラスを呼び出しています(テスト中)。クラスはスタンドアロンです(つまり、他のクラスの内部にはありません)。AlarmManagerによって呼び出されるたびにLog.dを実行します。しかし、彼のLog呼び出しの一部だけがlogcatに到達します。繰り返しになりますが、ここで何が起こっているのかについての提案を歓迎します。

[編集:インスタンス化するスレッドはログ呼び出しを正しく報告するため、上記を修正しましたが、インスタンス化するクラスは正しくありません。]

4

2 に答える 2

1

根本的な問題を解決するためにかなりの作業を行った後(AlarmManagerによってサービスが再作成されるを参照)、私はまだこの問題を抱えていました。サービスはまだログに記録されていませんでした。説明できない理由はありませんが、TAGを「SMS」から「SMservice」に変更すると機能しました。問題が解決したように見える以外に、良い説明はできません。

そして、あなたの質問を節約するために、TAGを「SMS」に戻すと、メッセージは再び消えます。

于 2013-03-28T20:19:09.993 に答える
0

logcatのフィルターとして「tag:SMS」を使用する必要があります。

于 2013-03-14T12:57:24.603 に答える