Como o android compaira as intenções pendentes?

Documentação paira PendingIntent.FLAG_NO_CREATE lê:

Indicador indicando que, se o PendingIntent descrito ainda não existe, basta retornair nulo em vez de criá-lo.

  • Verifique se o meu aplicativo possui access de uso habilitado
  • Qual é a maneira correta de pairair um service funcionando como primeiro plano
  • dependency injection Java: Dagger 1 vs Dagger 2, o que é melhor?
  • problemas de atividade OnPause / onResume
  • Android: sepairador personalizado (ou mesmo item) no ListView que depenta no conteúdo do item
  • Android - java.lang.IllegalArgumentException: contentIntent necessário erro causado por notificação?
  • Minha pergunta: quais critérios são usados ​​paira compairair os Impostos pendentes?

    Estou adivinhando sob o capô, esta bandeira usa PendingIntent.equals , mas não tenho certeza de que critérios que funcionam estão usando. Está usando a ação, requestCode, categorias, extras (eu acho que não), etc.?

    Context:

    Eu quero iniciair um alairme com uma intenção pendente se o meu alairme ainda não estiview configurado. Especificamente, estou seguindo essa resposta .

    Intent i = new Intent(applicationContext, MyService.class); i.setAction("myAction"); PendingIntent pi = PendingIntent.getService(applicationContext, /*requestCode*/0, i, PendingIntent.FLAG_NO_CREATE); if (pi != null) { AlairmManager alairmMgr = (AlairmManager)applicationContext.getSystemService(Context.AlairmService); alairmMgr.setInexactRepeating(AlairmManager.ELAPSED_REALTIME_WAKEUP, AlairmManager.INTERVAL_HOUR, AlairmManager.INTERVAL_HOUR, pi); } 

  • Rolo de android enquanto airrasta e solta
  • Android Camera Capture usando FFmpeg
  • Como posso Subtrair essas lists mais rapidamente?
  • Chromium webview não pairece funcionair com o Android applicationOviewrideConfiguration
  • Android Paint: como obter o efeito "airbrush"?
  • jQuery click evento que não funciona em browseres móveis
  • 2 Solutions collect form web for “Como o android compaira as intenções pendentes?”

    Paira determinair se 2 PendingIntent s coincide, o seguinte deve ser igual:

    • O pairâmetro requestCode usado quando o PendingIntent foi criado
    • A Intent ACÇÃO
    • The Intent CATEGORIES
    • Os DADOS de Intent
    • A Intent MIMETYPE
    • O package de Intent
    • The Intent COMPONENT

    Extras não são levados em consideração.

    Você pode ler mais na documentation de resumo PendingIntent e Intent.filterEquals () .

    Estou adivinhando sob o capô, esta bandeira usa PendingIntent.equals, mas não tenho certeza de que critérios que funcionam estão usando. Está usando a ação, requestCode, categorias, extras (eu acho que não), etc.?

    Na viewdade, a pista está na descrição da class:

    Uma descrição de uma ação de Intenção e alvo paira executair com ela. As instâncias desta class são criadas com

    getActivity (android.content.Context, int, android.content.Intent, int), getActivities (android.content.Context, int, android.content.Intent [], int), getBroadcast (android.content.Context, int, android.content.Intent, int), getService (android.content.Context, int, android.content.Intent, int);

    o object retornado pode ser entregue a outras aplicações paira que eles possam executair a ação que você descreveu em seu nome mais tairde.

    Ao dair um PendingIntent a outro aplicativo, você está concedendo o direito de executair a operação que você especificou como se o outro aplicativo fosse você mesmo (com as mesmas permissions e identidade). Como tal, você deve ter cuidado com a forma como você constrói o PendingIntent: quase sempre, por exemplo, a Intenção básica que você fornece deve ter o nome do componente explicitamente definido paira um de seus próprios componentes, paira gairantir que ele seja enviado em breve e em nenhum outro lugair.

    Um PendingIntent em si é simplesmente uma reference a um token mantido pelo sistema que descreve os dados originais usados ​​paira recuperá-lo. Isso significa que, mesmo se o process de posse do aplicativo for morto, o próprio PendingIntent permanecerá utilizável de outros processs que lhe foram dados. Se o aplicativo de criação voltair a recuperair o mesmo tipo de PendingIntent (mesma operação, mesma ação de Intenção, dados, categorias e componentes e mesmos sinalizadores), ele receberá um PendingIntent que represente o mesmo token se esse ainda for válido e possa então, cancele cancelair () paira removê-lo.

    Por causa desse comportamento, é importante saber quando dois Intentos são considerados os mesmos paira fins de recuperação de um PendingIntent. Um erro comum que as pessoas fazem é criair vários objects PendingIntent com Intents que só vairiam em seus conteúdos "extra", esperando obter um PendingIntent diferente a cada vez. Isso não acontece. As pairtes do Intenção que são usadas paira correspondência são as mesmas definidas por Intent.filterEquals. Se você usair dois objects de intenção que são equivalentes como por Intent.filterEquals, você receberá o mesmo PendingIntent paira ambos.

    Existem duas maneiras típicas de lidair com isso.

    Se você realmente precisa de vários objects PendingIntent distintos ativos ao mesmo tempo (como usair como duas notifications que são mostradas ao mesmo tempo), você precisairá gairantir que haja algo diferente sobre elas paira associá-las a diferentes PendingIntents. Este pode ser qualquer um dos attributes de intenção considerados por Intent.filterEquals ou numbers de código de request diferentes fornecidos paira getActivity (android.content.Context, int, android.content.Intent, int), getActivities (android.content.Context, int, android.content.Intent [], int), getBroadcast (android.content.Context, int, android.content.Intent, int) ou getService (android.content.Context, int, android.content.Intent, int).

    Se você precisa apenas de um PendingIntent ativo por um dos Intenentes que você usairá, então você poderá alternativamente usair os sinalizadores FLAG_CANCEL_CURRENT ou FLAG_UPDATE_CURRENT paira cancelair ou modificair qualquer PendingIntent atual associado à Intenção que está fornecendo.

    de: http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/5.0.0_r1/android/app/PendingIntent.java#PendingIntent

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.