5

電話を回転させるか、ホームボタンを押すと、アプリケーションがクラッシュし、次の例外が発生します。

11-25 22:17:23.855: E/AndroidRuntime(5033): FATAL EXCEPTION: main
11-25 22:17:23.855: E/AndroidRuntime(5033): java.lang.RuntimeException: Unable to stop activity {com.liteapps.handin_3/com.liteapps.handin_3.MainActivity}: java.lang.IllegalArgumentException: Service not registered: com.liteapps.handin_3.MainActivity$2@42116cf0
11-25 22:17:23.855: E/AndroidRuntime(5033):     at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:3363)
11-25 22:17:23.855: E/AndroidRuntime(5033):     at android.app.ActivityThread.handleDestroyActivity(ActivityThread.java:3417)
11-25 22:17:23.855: E/AndroidRuntime(5033):     at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:3615)
11-25 22:17:23.855: E/AndroidRuntime(5033):     at android.app.ActivityThread.access$700(ActivityThread.java:142)
11-25 22:17:23.855: E/AndroidRuntime(5033):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1214)
11-25 22:17:23.855: E/AndroidRuntime(5033):     at android.os.Handler.dispatchMessage(Handler.java:99)
11-25 22:17:23.855: E/AndroidRuntime(5033):     at android.os.Looper.loop(Looper.java:137)
11-25 22:17:23.855: E/AndroidRuntime(5033):     at android.app.ActivityThread.main(ActivityThread.java:4931)
11-25 22:17:23.855: E/AndroidRuntime(5033):     at java.lang.reflect.Method.invokeNative(Native Method)
11-25 22:17:23.855: E/AndroidRuntime(5033):     at java.lang.reflect.Method.invoke(Method.java:511)
11-25 22:17:23.855: E/AndroidRuntime(5033):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:791)
11-25 22:17:23.855: E/AndroidRuntime(5033):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:558)
11-25 22:17:23.855: E/AndroidRuntime(5033):     at dalvik.system.NativeStart.main(Native Method)
11-25 22:17:23.855: E/AndroidRuntime(5033): Caused by: java.lang.IllegalArgumentException: Service not registered: com.liteapps.handin_3.MainActivity$2@42116cf0
11-25 22:17:23.855: E/AndroidRuntime(5033):     at android.app.LoadedApk.forgetServiceDispatcher(LoadedApk.java:917)
11-25 22:17:23.855: E/AndroidRuntime(5033):     at android.app.ContextImpl.unbindService(ContextImpl.java:1253)
11-25 22:17:23.855: E/AndroidRuntime(5033):     at android.content.ContextWrapper.unbindService(ContextWrapper.java:405)
11-25 22:17:23.855: E/AndroidRuntime(5033):     at com.liteapps.handin_3.MainActivity.onStop(MainActivity.java:71)
11-25 22:17:23.855: E/AndroidRuntime(5033):     at android.app.Instrumentation.callActivityOnStop(Instrumentation.java:1204)
11-25 22:17:23.855: E/AndroidRuntime(5033):     at android.app.Activity.performStop(Activity.java:5146)
11-25 22:17:23.855: E/AndroidRuntime(5033):     at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:3358)
11-25 22:17:23.855: E/AndroidRuntime(5033):     ... 12 more

そしてこれはmConnectionです

  /** Defines callbacks for service binding, passed to bindService() */
private ServiceConnection mConnection = new ServiceConnection() 
{

    @Override
    public void onServiceConnected(ComponentName className,
            IBinder service) {
        // We've bound to LocalService, cast the IBinder and get LocalService instance
        LocalBinder binder = (LocalBinder) service;
        mService = binder.getService();
        mBound = true;
    }

    @Override
    public void onServiceDisconnected(ComponentName arg0) {
        mBound = false;
    }
};

私はすでに自分のサービスを登録しました-少なくとも、マニフェストに以下を挿入することで登録したと思います:

<service android:name="StationService" />
4

4 に答える 4

2

そもそもサービスがバインドされていないときに、問題がサービスのバインドを解除することであることに気付きました。onPause()でサービスのバインドを解除するだけで、私の問題は解決したようです。

于 2012-11-28T08:45:54.173 に答える
2

同じコンテキストからバインドおよびバインド解除していることを確認してください。このエラーが発生しましたが、これは、サービスをバインドするためのコンテキストラッパーを以前に実装したことが原因であることがわかりました。私のバインド解除はビューコンテキストにあったため、サービスのバインド/登録についての知識がありませんでした。

于 2016-05-26T02:59:04.803 に答える
0

アプリケーションマニフェストファイルにサービスを登録します。

于 2012-11-26T18:01:10.420 に答える
0

マニフェストにサービスが正しく登録されていません。次のいずれかになります。

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

サービスがマニフェストで指定されたパッケージと同じJavaパッケージにある場合。

またはService、マニフェストに登録されているものとは異なるJavaパッケージに含まれている場合は、完全なパッケージ名を指定する必要があります。

<service android:name="com.example.package.StationService" />

于 2012-11-28T08:21:25.277 に答える