我正在尝试编写一个Android服务,该服务将由多个不同的客户端应用程序访问。
这是针对我们自己的硬件上的一个非常具体的应用程序,我知道强制服务持续存在(性能和电池寿命)的潜在缺陷,但我仍然需要这样做。
当我将服务作为应用程序的一部分运行时(即清单中的服务元素没有android:process
属性),它运行正常并且不会崩溃或停止。但是,当我将它作为一个单独的进程运行时,它会被重复杀死并重新启动。这种行为对我的应用程序来说是不受欢迎的。
到目前为止,我已尝试在服务中使用startForeground
命令,如下所示:
Intent notificationIntent = new Intent(this, MainActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0,
notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT);
Notification notification = new NotificationCompat.Builder(this)
.setSmallIcon(R.drawable.ic_stat_name)
.setContentText("Text")
.setContentTitle("Description")
.setContentIntent(pendingIntent).build();
startForeground(123, notification);
这似乎不起作用,因为该过程仍然被杀死并不断重启。我错过了这种方法吗?
我可以尝试的其他替代方法是从/system/app/
运行应用程序,但我还没有尝试过。有没有一种简单的方法可以让Android Studio在我的调试配置中部署我的应用程序,而我仍在使用它? (是的,我在设备上有root访问权限)。或者至少,我如何手动移动它并运行它?
我正在使用Android API 21。