回答

2

如何与应用程序的第一个活动一起启动Started Service?

致电startService(intent)onCreate()方法的第一个Activity

我有一个后台服务。我希望它的生命周期独立于应用程序活动。

要做到这一点,最好的办法是为Service创建PendingIntent,并注册它的AlarmManager

Intent i = new Intent(this, LocationService.class); 
PendingIntent pi = PendingIntent.getService(this, 1, intent, PendingIntent.FLAG_CANCEL_CURRENT);   
AlarmManager am = (AlarmManager)getSystemService(Context.ALARM_SERVICE); 
am.setInexactRepeating(AlarmManager.RTC_WAKEUP,0,60*60*1000, pi); /* start Service every hour. */ 

这将确保Service以固定的间隔周期开始,与是否用户已经将应用程序带到了前台或没有。

如何在Android应用程序启动时启动服务?

可以自动在应用程序启动通过扩展Application类开始Service

public class MyApp extends Application { 

    @Override 
    public void onCreate() { 
     super.onCreate(); 
     startService(new Intent(this, NetworkService.class)); 
    } 

} 

和修改application标签在你manifest

<application 
    android:icon="@drawable/icon" 
    android:label="@string/app_name" 
    android:name="com.mycompanydomain.MyApp"> 

这工作,因为Application类是应用程序启动时要创建的第一批实体之一。无论启动Activity是什么,这将启动Service

+0

谢谢Y.S.开始第一项活动的服务是我目前所做的。我正在寻找另一种方式,例如:以某种方式响应MAIN动作。 该场景是我所有的活动都使用该服务,为该服务提供接口。该服务是一个网络IO相关的,所以它必须保持活着。 – 2015-04-06 14:40:51

+0

那么你所面临的问题究竟是什么?你在这里无法实现什么? – 2015-04-07 08:49:30

+0

这是应用程序设计的问题。如果我们可以声明哪个服务启动的方式与我们在清单中声明要加载哪个活动的相同方式会更方便。现在,我指定一个活动作为应用程序的入口点,并在那里加载服务。但是如果我选择另一项活动作为切入点呢?剪切粘贴对我来说看起来不够干净。 – 2015-04-07 15:40:05