編集:この質問のより研ぎ澄まされたバージョンは、良い答えがあります:ログのかなり奇妙な振る舞い
編集:(奇妙な)解決策は以下の答えとして報告されています。
私は、アプリケーションの一部として、適度に実行されているサービスを持っていますが、理解しようとしている異常な動作があります。これを行うために、クラスのさまざまなメソッドに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に到達します。繰り返しになりますが、ここで何が起こっているのかについての提案を歓迎します。
[編集:インスタンス化するスレッドはログ呼び出しを正しく報告するため、上記を修正しましたが、インスタンス化するクラスは正しくありません。]