【问题标题】:Android: Stop/start service created in onCreate()Android:在 onCreate() 中创建的停止/启动服务
【发布时间】:2013-06-01 19:40:24
【问题描述】:

我目前有一个在活动的 onCreate 方法中启动的服务,使用:

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

我现在需要能够在按下按钮时停止此服务并在按下另一个按钮时再次重新启动它,但是我不确定如何停止此服务并在 onCreate 方法之外再次启动它。

我想我需要以不同于我目前正在做的方式启动服务?但我不确定最好的方法。

我查看了stop service in 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);

        }
    };

【问题讨论】:

    标签: java android android-service


    【解决方案1】:

    当您想要启动一项服务时,您所需要的只是

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

    要随时停止服务,只需调用

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

    记住服务需要在 AndroidManifest.xml 中声明。正如您所说,您的服务正在运行。我相信你已经做到了。 还是AndroidManifest.xml

     <service android:enabled="true" android:name=".MainService" />
    

    【讨论】:

    • EDIT 似乎这只适用于 onCreate 代码在 onclick 监听器中不起作用
    • 是的。但请尝试先停止服务,然后再启动它。如果服务已经停止,它不会崩溃
    • 假设 this 需要更改为其他内容,似乎在 onclick 侦听器中不起作用?
    • 在 OnClick 侦听器中而不是 this 中使用 MainActivity.this
    猜你喜欢
    • 1970-01-01
    • 2012-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-20
    • 1970-01-01
    相关资源
    最近更新 更多