- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我无法理解 android 关于服务的新功能。在 google 文档中,在 oreo
之后,开发人员必须在应用程序处于后台时使用前台服务来启动服务。
我找到了这个描述。
'从 Android O 开始,如果您的应用程序处于后台(检查以上三个条件),则允许您的应用程序创建和运行后台服务几分钟。
几分钟后,您的应用程序将进入空闲阶段。当您的应用程序进入空闲阶段时,系统将停止所有后台服务,就像您的服务调用 Service.stopSelf()
一样。'
我无法理解,即使我使用 START_STICKY 启动服务,它不会再次启动吗?我知道如果我从 START_STICKY 开始,它会在 kill 后完全重新启动。为什么我必须使用 JobScheduler
来满足某些需求(位置更新等)。有人可以解释一下吗?我无法理解谷歌文档很好。
我现在在 galaxy note 8 api26
手机上测试它。我在应用程序启动时使用 startService 启动服务,并在关闭应用程序后重新启动。旧版本之间有什么区别
谢谢。
最佳答案
public class MyActivity2 extends Activity {
private Intent serviceIntent;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
serviceIntent = new Intent(this, MyService.class);
serviceIntent.putExtra("name", "ahmet vefa saruhan");
startService(serviceIntent);
findViewById(R.id.textview).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
stopService(new Intent(getApplicationContext(),MyService.class));
}
});
}
}
public class MyService extends Service {
private String myaction;
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Log.d("MYSERVICE STATUS: "," ONSTARTCOMMAND action : " + ((intent != null && intent.getStringExtra("name") != null) ? intent.getStringExtra("name") : "yok") + " OLD ACTION : "+(myaction != null ? myaction : "yok"));
Log.d("MYTHREAD name : ",Thread.currentThread().getName());
//intent.putExtra("name","isim değişti");
myaction = (intent != null) ? intent.getAction() : null;
return START_STICKY;
}
@Override
public void onCreate() {
super.onCreate();
Log.d("MYSERVICE STATUS: "," ONCREATED");
}
@RequiresApi(api = Build.VERSION_CODES.O)
private void startMyOwnForeground()
{
String NOTIFICATION_CHANNEL_ID = "example.permanence";
String channelName = "Background Service";
NotificationChannel chan = new NotificationChannel(NOTIFICATION_CHANNEL_ID, channelName, NotificationManager.IMPORTANCE_NONE);
chan.setLightColor(Color.BLUE);
chan.setLockscreenVisibility(Notification.VISIBILITY_PRIVATE);
NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
assert manager != null;
manager.createNotificationChannel(chan);
NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this, NOTIFICATION_CHANNEL_ID);
Notification notification = notificationBuilder.setOngoing(true)
.setContentTitle("App is running in background")
.setPriority(NotificationManager.IMPORTANCE_MIN)
.setCategory(Notification.CATEGORY_SERVICE)
.build();
startForeground(2, notification);
}
@Override
public void onDestroy() {
Log.d("MYSERVICE STATUS: "," ONDESTROYED");
super.onDestroy();
}
@Override
public void onTaskRemoved(Intent rootIntent) {
Log.d("MYSERVICE STATUS: "," onTaskRemoved");
super.onTaskRemoved(rootIntent);
}
}
关于android 使用 START_STICKY 启动前台服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54365395/
我正在构建一个应用程序,但是在返回 START_STICKY; 行后遇到了一条错误,指出“无法访问代码”;从 if (Config.DEVELOPMENT) { 开始,我不确定如何解决这个问题,以便我
因此,如果我理解正确,START_STICKY 之间的区别和 START_NOT_STICKY是第一个将由系统重新启动,以防它杀死它。 有谁知道当我使用 Process.killProcess(Pro
我希望确保我的服务在后台运行,即使在用户关闭应用程序(从任务管理器或相关应用程序)后也是如此。我正在尝试实现 START_STICKY 但不知道如何正确覆盖 startService 方法以使其正常工
关于使用START_STICKY在 Android 服务中。 官方文档说: if this service's process is killed while it is started (after
我有一个包含长期运行服务的应用程序。我已从该服务的 onStartCommand 方法返回 START_STICKY。现在我想测试 START_STICKY 是否正常工作。那么我如何测试我的服务由于内
Foreground Service 具有非常高的优先级,不太可能被系统杀死,所以在 onStartCommand< 中返回 START_STICKY 有什么意义吗?/? 编辑:这个问题不是关于 ST
我有一个作为网络服务器运行的应用程序。该应用有一项服务是 START_STICKY 我希望该服务始终运行网络服务器(在通知中向用户提供了停止它的选项)。 问题是当我关闭我的应用程序时,服务器会重新启动
我问了一个关于保持服务存活的问题,但我没有找到解决方案,所以我有另一个更简单的问题。 android 文档说如果 android 在低内存状态下返回 onStartCommand 时使用 START_
I have read this answer and it's not useful in my case. 我已经创建了一个简单的服务,它除了记录方法名称外什么都不做。我从我的 Activity
在我的 Android 应用程序中,我有一个服务应该在它被杀死后自动重启。我发现这可以使用 START_STICKY 来完成。 但显然当服务自动重启时, Intent 是null。然而,问题在于 In
我无法理解 android 关于服务的新功能。在 google 文档中,在 oreo 之后,开发人员必须在应用程序处于后台时使用前台服务来启动服务。 我找到了这个描述。 '从 Android O 开始
我正在开发一款播放音乐的 Android 应用。 到目前为止,我已经从负责播放音乐的服务的 onStartCommand 返回了 START_STICKY,因为 Eclipse 中的工具提示指出:“此
在我的服务中,我已返回 START_STICKY 以使我的 Service 在我终止应用程序后再次重启。 我已经测试过,它可以在设备 Samsung、Sony、LG 中使用,但在 Xiaomi 中无法
我见过许多 android 服务示例,其中返回 START_STICKY 用于在启动时启动应用程序,但无论如何我可以对 IntentService 使用相同的示例。我知道 Service 方法在主 U
我的应用程序使用第三方库,该库启动了 START_STICKY 服务。所以即使应用被销毁,服务被杀死,它也会自动重启。 我的问题是,有什么方法可以像更改应用程序一样更改此服务生命周期吗?服务在应用启动
我希望 android 应用程序运行后台服务,每分钟执行一次 HTTP 请求,并在服务器返回特定代码时显示通知。 我这样做了,并将服务器标记为 START_STICKY 以将其保存在内存中。但是几天后
我需要让我的服务始终在后台运行。并使用“startService()”函数启动我的服务。无论应用程序的状态如何,我都不想重新启动服务。 这是我的观察。 START_STICKY > 如果应用程序启动,
我在应用程序中使用服务来监听用户按下他/她的电源按钮的次数。该实现在所有设备上运行良好。但是当我在 Android Kitkat 上测试该应用时,我发现了一些问题。 一旦我将应用程序从最近使用的应用程
START_STICKY 和有什么区别?和 START_NOT_STICKY在android中实现服务时?谁能指出一些标准的例子..? 最佳答案 这两个代码仅在手机内存不足并在服务完成执行之前终止服务
不知何故,我很难解析 official description START_STICKY 标志: Constant to return from onStartCommand(Intent, int,
我是一名优秀的程序员,十分优秀!