onTaskRemoved没有在mi设备上调用

时间:2017-07-24 05:06:14

标签: android

onTaskRemove()此方法仅在您的服务启动后才调用,然后按下后退按钮然后从最近的任务列表中删除该时间此方法调用但是如果应用前景为后台然后在kill后再onTaskRemove()没有有人对此问题有任何建议。在三星设备中完美运行。

代码示例

public class OnClearFromRecentService extends Service {

    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        Log.d("ClearFromRecentService", "Service Started");
        return START_STICKY;
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        Log.d("ClearFromRecentService", "Service Destroyed");
    }

    @Override
    public void onTaskRemoved(Intent rootIntent) {
        Log.e("ClearFromRecentService", "END............");
        //Code here
        stopSelf();
    }
}

3 个答案:

答案 0 :(得分:1)

当您从最近清除进程时,

onTaskRemoved()被称为。同样发生在活动中 - 如果您只是按主页按钮活动转到后台但任务(进程)不会删除。如果你需要停止进程 - 只需停止服务或调用.finishAndRemoveTask()进行活动。

答案 1 :(得分:1)

考虑使用Activity的getLifecycle:

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)

    ...

    getLifecycle().addObserver(MyObserver(this))
}


class MyObserver(var context: Context) : LifecycleObserver {

@OnLifecycleEvent(Lifecycle.Event.ON_DESTROY)
fun disconnect() {
   //here you may add job you needed to fire in onTaskRemove()
}

}

答案 2 :(得分:0)

在诸如honour之类的手机中,直到用户将您的应用设置为白名单后,才会调用mi onTaskRemoved()。对于mi手机,我们有此意图:

 if (Build.BRAND.equals("xiaomi", ignoreCase = true)) {
        val intent = Intent()
        intent.component =
            ComponentName("com.miui.securitycenter", "com.miui.permcenter.autostart.AutoStartManagementActivity")
        startActivity(intent)
    }

希望有帮助。