2

私は好みのアクティビティで終了オプションを提供しています。そのオプションでは、サービスのバインドを解除して停止したいと考えています。しかし、私のアプリケーションは閉じられますが、サービスは停止しません。別のアクティビティからサービスを開始してバインドしています。優先活動では、私は開始も拘束もしていません。

設定アクティビティのコードは次のとおりです。

Preference exit = findPreference("Exit");
        exit.setOnPreferenceClickListener(new OnPreferenceClickListener() {

            public boolean onPreferenceClick(Preference preference) {
                // TODO Auto-generated method stub
                new AlertDialog.Builder(SettingsActivity.this)
                .setTitle("Exit :")
                .setMessage("Are You Sure??")
                .setNegativeButton("No", null)
                .setPositiveButton("Yes",
                        new Dialog.OnClickListener() {
                            public void onClick(DialogInterface dialog, int which) {

                                stopService(new Intent(getApplicationContext(), MyService.class));                              
                                Intent intent = new Intent(Intent.ACTION_MAIN);
                                intent.addCategory(Intent.CATEGORY_HOME);
                                intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                                startActivity(intent);
                            }
                        })
                .show();
                return true;
            }
        });

しかし、myservice は停止しません。サービスを停止するにはどうすればよいですか?? 助けてください..

編集 :

エラーが発生しました

01-24 10:20:30.699: E/AndroidRuntime(18503): FATAL EXCEPTION: main
01-24 10:20:30.699: E/AndroidRuntime(18503): java.lang.IllegalArgumentException: Service not registered: com.androidhive.musicplayer.SettingsActivity$1@405c7af8
01-24 10:20:30.699: E/AndroidRuntime(18503):    at android.app.LoadedApk.forgetServiceDispatcher(LoadedApk.java:891)
01-24 10:20:30.699: E/AndroidRuntime(18503):    at android.app.ContextImpl.unbindService(ContextImpl.java:901)
01-24 10:20:30.699: E/AndroidRuntime(18503):    at android.content.ContextWrapper.unbindService(ContextWrapper.java:352)

私が変更したコード:

getApplicationContext().stopService(new Intent(SettingsActivity.this, MyService.class));                    getApplicationContext().unbindService(serviceConnection);
4

1 に答える 1

5

通常、サービスは最後のアクティビティで停止されますonPauseonDestroy

私は自分のプロジェクトの 1 つでこのコードを使用します。

@Override
protected void onDestroy() {
    super.onDestroy();
    getApplicationContext().unbindService(service);
}

このコードは、アプリを終了するときにサービスを終了します。

于 2013-01-23T13:14:51.120 に答える