0

シンプルなサービスを作成しようとしています。

これはサービスソースです

public class UploadService extends IntentService {

    public UploadService(String name) {
        super(name);
        // TODO Auto-generated constructor stub
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId){
        Toast.makeText(this, "service starting", Toast.LENGTH_SHORT).show();
        return super.onStartCommand(intent, flags, startId);
    }

    @Override
    protected void onHandleIntent(Intent intent) {
        // TODO Auto-generated method stub
        Toast.makeText(this, "handling intent", Toast.LENGTH_SHORT).show();
    }

これは、マニフェスト内のサービスの定義です

<service 
    android:enabled="true" 
    android:name="com.sopla.Services.UploadService">
</service>

これは、プログラムの起動時に呼び出されるメイン アクティビティの onCreate メソッドでサービスを開始するために使用するコードです。

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Intent intent = new Intent(this,
            com.sopla.Services.UploadService.class);
    startService(intent);

すべての onCreate メソッドをデバッグできますが、この後プログラムがハングし、サービス ソース コードのブレークポイントに到達できません。

何か足りない?ありがとう、ルカ

4

2 に答える 2

0

すべての人に感謝しますが、logcat をよく確認すると、問題が見つかりました。
何らかの奇妙な理由で、Ide に IntentService の不足しているメンバーを追加するように依頼すると、文字列を含むコンストラクターが追加されますが、実行時にはコンストラクターが必要です。
コストラクタから文字列パラメータを削除すると、問題が解決しました。

于 2014-11-20T09:28:14.600 に答える
0

あなたのonStartCommandのためにこれを試してください:

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
    TODO do something useful
    return Service.START_NOT_STICKY;
}
于 2014-11-19T18:20:39.610 に答える