web-dev-qa-db-ja.com

Android:onCreate()で作成されたサービスの停止/開始

現在、以下を使用してアクティビティのonCreateメソッド内で開始されるサービスがあります。

Intent intentService = new Intent(this, MainService.class);
this.startService(intentService);

ボタンを押すとこのサービスを停止し、別のボタンを押すとサービスを再開できるようにする必要がありますが、このサービスを停止してonCreateメソッドの外部で再開する方法がわかりません。

現在行っている方法とは異なる方法でサービスを開始する必要があると思いますか?しかし、私はこれのための最良の方法がわかりません。

Androidでサービスを停止 を見ましたが、サービスを開始する方法がonCreate内で機能しないようです。

私のコードのより完全な概要:

public class MainActivity extends Activity {

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

            lock = (Button) this.findViewById(R.id.lock);
            unlock = (Button) this.findViewById(R.id.unlock);

            lock.setOnClickListener(btn_lock);
            unlock.setOnClickListener(btn_unlock);

            unlock.setVisibility(View.VISIBLE);

            lock.setVisibility(View.GONE);

            Intent intentService = new Intent(this, MainService.class);
            this.startService(intentService);

        }
private OnClickListener btn_lock = new OnClickListener() {
        public void onClick(View v) {
                unlock.setVisibility(View.VISIBLE);
                lock.setVisibility(View.GONE);


        }
    };
private OnClickListener btn_unlock = new OnClickListener() {
        public void onClick(View v) {
                unlock.setVisibility(View.GONE);
                lock.setVisibility(View.VISIBLE);

        }
    };
12
Zac Powell

サービスを開始したいときはいつでも必要なのは

 startService(new Intent(this, MainService.class));

そして、いつでもサービスを停止するには、

stopService(new Intent(this, MainService.class));

サービスはAndroidManifest.xmlで宣言する必要があることに注意してください。あなたが言ったようにあなたのサービスは機能しています。あなたはそれをしたと確信しています。それでもAndroidManifest.xml

 <service Android:enabled="true" Android:name=".MainService" />
29
MDMalik