2011-12-31 9 views
0

奇妙な問題私は直面しています。アクティビティが作成されたときにサービスを開始したいと考えています。 (あなたがわかりますように、非常に単純な)ここに私のサービスのコードは次のとおりです。Androidサービスが起動しない

私のAndroidManifest.xmlで
package com.nblmedia.service; 

import android.app.Service; 
import android.content.Intent; 
import android.os.IBinder; 
import android.util.Log; 

public class ServiceSynchro extends Service { 

public ServiceSynchro() 
{ 
    Log.i(XXX.LOG, "ServiceSynchro"); 
} 

@Override 
public IBinder onBind(Intent intent) { 
    Log.i(XXX.LOG, "onBind"); 
    // TODO Auto-generated method stub 
    return null; 
} 

@Override 
public void onCreate() { 
    // TODO Auto-generated method stub 
    Log.i(XXX.LOG, "onCreate"); 
    super.onCreate(); 
} 

@Override 
public void onDestroy() { 
    Log.i(XXX.LOG, "onDestroy"); 
    // TODO Auto-generated method stub 
    super.onDestroy(); 
} 
} 

私は次のようにサービスを宣言した:

<service android:name=".ServiceSynchro"></service> 

Finaly、私のサービスを開始するには、 onCreateのstartServiceメソッドを呼び出します。

protected void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    startService(new Intent(UserMenuActivity.this, ServiceSynchro.class));  
} 

何も起こりません。デバイスの実行中のサービスを確認すると、ServiceSynchoという名前のサービスは実行されていません。 Logcatをチェックすると何も出力されません。ブレークポイントにも同じですが、アプリケーションはサービスのライフサイクルイベントを循環しません。どのようなアイデアを私の問題にすることができますか?

+0

Service.onStartCommand(..)を実装して、少なくとも呼び出されるかどうかを調べることができます。 – harism

答えて

5

コンストラクタを削除します。コンポーネントにコンストラクタを実装しないでください(唯一の例外:IntentService)。

また、Javaのほかの場所でコンストラクタを実装する場合は、スーパークラスにチェーンします。

8

問題が見つかりました。私のAndroidManifest.xmlファイルでは、service:name属性がサービスの完全修飾クラス名を参照していませんでした。私は必要なときに

<service android:name=".ServiceSynchro"></service> 

:ドキュメントからアプリケーションに興味がある人のために

<service android:name="com.xxx.service.ServiceSynchro"></service> 

here is the linkそれを表示する例として、私はこれを使用していました。

アンドロイド:サービスを実装するサービス・サブクラスの 名前です。これは、完全修飾クラス名( "com.example.project.RoomService"など)である必要があります。ただし、省略形として、名前の最初の文字がピリオド(たとえば、 ".RoomService")の場合、要素に指定されたパッケージ名に追加されます。

最後に、onStartメソッドが廃止されたため、最後にonStartCommandコマンドをオーバーライドするようにコードを更新しました。

public int onStartCommand(Intent intent, int flags, int startId) 
0

サービスが開始されなかったときはどこでも見ました。 何も問題はありませんでした.3時間目の最終的なデバッグでは、私のパッケージ名がstandart形式のxx.xx.xxパッケージ名ではないことが分かりました。 お問い合わせください。

関連する問題