为什么Service仅在app运行时运行

时间:2015-05-28 11:24:07

标签: android

我有以下服务

public class service extends IntentService{

    private SharedPreferences sp;
    private Editor editor;
    Timer timer;


    public service(String name) {
        super("Ali");
        // TODO Auto-generated constructor stub
    }

    public service() {
        // TODO Auto-generated constructor stub
        super("Ali");

    }

    @Override
    public void onCreate() {
        // TODO Auto-generated method stub
        super.onCreate();
        sp = getSharedPreferences("sp", Activity.MODE_PRIVATE);
        editor = sp.edit();
        timer = new Timer();
    }



    @Override
    protected void onHandleIntent(Intent arg0) {
        // TODO Auto-generated method stub


        }

    }

清单文件中的声明

 <service android:name="ir.aiga.apps.ibrahim_hadi.services.service" 
        android:exported="false"/>

我在Activity

中使用此代码启动服务
startService(new Intent(MainActivity.this, service.class));

但是服务只是在应用程序运行时运行。 有什么问题? 是否可以为另一个应用程序提供类似于我的服务名称的服务名称?

3 个答案:

答案 0 :(得分:0)

一旦处理完成,

IntentService将自动销毁()。要在后台继续运行服务,请使用普通Service

答案 1 :(得分:0)

问题是在另一个应用程序中,服务名称与当前服务名称相同。我应该更改服务名称。

答案 2 :(得分:0)

IntentService

处理完所有意图后,onHandleIntent()将自动停止

来自docs

  

在工作线程上调用此方法并处理请求。一次只处理一个Intent,但处理发生在独立于其他应用程序逻辑运行的工作线程上。因此,如果此代码需要很长时间,它将阻止对同一个IntentService的其他请求,但它不会阻止其他任何内容。处理完所有请求后,IntentService会自行停止,因此不应调用stopSelf()。

我的猜测是,您只是从Activity启动服务一次,在这种情况下,一旦执行到onHandleIntent()结束,service将自行停止,无论你在该课程中做了什么。