我有以下服务
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));
但是服务只是在应用程序运行时运行。 有什么问题? 是否可以为另一个应用程序提供类似于我的服务名称的服务名称?
答案 0 :(得分:0)
IntentService
将自动销毁()。要在后台继续运行服务,请使用普通Service
答案 1 :(得分:0)
问题是在另一个应用程序中,服务名称与当前服务名称相同。我应该更改服务名称。
答案 2 :(得分:0)
IntentService
onHandleIntent()
将自动停止
来自docs:
在工作线程上调用此方法并处理请求。一次只处理一个Intent,但处理发生在独立于其他应用程序逻辑运行的工作线程上。因此,如果此代码需要很长时间,它将阻止对同一个IntentService的其他请求,但它不会阻止其他任何内容。处理完所有请求后,IntentService会自行停止,因此不应调用stopSelf()。
我的猜测是,您只是从Activity
启动服务一次,在这种情况下,一旦执行到onHandleIntent()
结束,service
将自行停止,无论你在该课程中做了什么。