【问题标题】:Android - Starting a service in the onCreate method of activity with some delayAndroid - 在活动的 onCreate 方法中启动服务有一些延迟
【发布时间】:2014-12-19 01:21:59
【问题描述】:

首先我看到了这个: Android start service issue in onCreate of Activity

但是我的问题不同。

我想创建一个活动,然后在几秒钟后,服务应该会自动启动(我不希望用户按下任何按钮来启动服务)并且当用户按下按钮时服务应该停止。

如果我在oncreate方法中调用startservice,服务会在activity创建完成之前启动。

如果我使用 runnable 来定义服务,我将无法直接访问服务来停止它。

我尝试使用 new Thread(),并在 run 函数中启动服务,然后启动线程,但它对我也不起作用。

那我该怎么办呢?

谢谢。

【问题讨论】:

  • 我不明白这个“如果我使用 runnable 来定义服务,我将无法直接访问服务来停止它

标签: android multithreading service


【解决方案1】:

点击按钮停止服务

stop.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            stopService(new Intent(context,serviceclass));
        }
    });

延迟后启动

new Handler().postDelayed(new Runnable() {

            @Override
            public void run() {
                // TODO Auto-generated method stub
                startService(new Intent(context,serviceclass));
            }
        }, 3000); // 3 seconds..

【讨论】:

  • 问题是我应该在哪里启动服务?当我在活动的 onCreate 方法中启动它时,服务会阻止活动,因为它在 onCreate 方法完全运行之前启动。
  • 然后在你完成所有重要的事情后启动它......任何地方......你的服务在 ui 线程上运行,因此活动被阻止,因为你在主线程上做了很多事情。 . 所以重新构建你的代码@Taher
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-07
相关资源
最近更新 更多