0

私は Android で Service を試してみました。私のアプリケーションにはボタン付きのアクティビティが含まれているため、ボタンを押すとアクションを実行できます。コア コンポーネントは、 IntentService フレームワーク クラスを拡張する ExtractingURLService です。onHandleIntent() メソッドをオーバーライドして、渡されたインテントを適切に処理できるようにしました。コード:

public  class ExtractingURLService extends IntentService {

    private static final String TAG = "ExtractingURLService"; 

    public ExtractingURLService(String name) {
        super("ExtractingURLService");
    }

    @Override
    protected void onHandleIntent(Intent intent) {
        // do something here !
        }
    }



}

Android マニフェスト ファイルは次のとおりです。

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="example.service.urlextraction"
      android:versionCode="1"
      android:versionName="1.0">
    <uses-sdk android:minSdkVersion="10" />
    <uses-permission android:name="android.permission.INTERNET"/>

    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".ServiceExample02Activity"
                  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=".ExtractingURLService" android:enabled="true"></service>

    </application>
</manifest>

私の唯一の Activity クラスでは、以下を使用してサービスを呼び出します。

Intent startServiceIntent =  new Intent(this, ExtractingURLService.class);
startService(startServiceIntent);

以上が私の作業ですが、デプロイ時に受け取った実行時エラーは次のとおりです。

04-09 16:24:05.751: エラー/AndroidRuntime(1078): 原因: java.lang.InstantiationException: example.service.urlextraction.ExtractingURLService

私はそれで何をすべきですか??

4

2 に答える 2

2

サービスのフルパスを追加

<service android:name="com.foo.services.ExtractingURLService" android:enabled="true"></service>

インテント サービスは次のようになります。

package com.foo.services;

import android.app.IntentService;
import android.content.Intent;

public class ExtractingURLService extends IntentService {

    private static final String TAG = "ExtractingURLService";

    public ExtractingURLService() {
        super("ExtractingURLService");
    }

    @Override
    protected void onHandleIntent(Intent intent) {
        // do something here !
    }
}
于 2012-04-10T00:28:19.123 に答える
0

クラッシュを回避するために try と catch ブロックを追加できます。

try {
      Intent intent = new Intent(DashboardActivity.this, MyService.class);
      startService(intent);

     }catch (IllegalStateException e){

    }catch (Exception ee){

   }

于 2020-09-19T10:55:19.483 に答える