我在清单中声明了一个服务,如
<service android:name=".services.ScreenOnService" android:process="@string/screenProcess"/>
所有服务都注册了Screen_on广播(因为我总是需要打开屏幕的信息,而不仅仅是我的应用程序正在运行)
@Nullable
@Override
public IBinder onBind(Intent intent)
{
return null;
}
@Override
public int onStartCommand(Intent intent, int flags, int startId)
{
//All this service has to do is register for the screen on broadcast
//as this one can't be registere in manifest and the ACTION_USER_PRESENT is
//not guaranteed to be fired. (E.g. if no lock screen is used)
IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_ON);
registerReceiver(screenEventReceiver,filter);
return START_STICKY;
}
@Override
public void onDestroy()
{
unregisterReceiver(screenEventReceiver);
super.onDestroy();
}
我从我的Application onCreate
启动服务@Override
public void onCreate() {
super.onCreate();
if(!isScreenOnServiceAlreadyRunning())
{
//Start the screen on service
Intent screenOnService = new Intent(this, ScreenOnService.class);
startService(screenOnService);
}
}
只要应用程序正在运行,一切都很好。如果我杀了应用程序,它自己的进程中的服务也会被杀死,我不明白为什么。
我在这里发现了一篇很有前途的文章http://fabcirablog.weebly.com/blog/creating-a-never-ending-background-service-in-android并希望最好,但即使我这样做并发送广播,它也行不通。
如果应用被杀,为什么服务会停止工作?我认为它会继续运行,就像它自己的流程一样。如果用我的方法无法实现我想要的东西,那么最好的方法是什么?
谢谢。
答案 0 :(得分:0)
@Hardcore_Graverobber我认为您应该将服务作为一个单独的流程启动,
请参阅本教程 http://www.vogella.com/tutorials/AndroidServices/article.html