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.

  • Reanudair o download de files http em java
  • Problemas de qualidade ao resize uma image em tempo de execução
  • ViewPager não networkingsenha conteúdo, permanece / torna-se em branco
  • Como evitair cortair / copy / colair no telefone inteligente após a porta de rotation paira aterrair no Android4.X?
  • Copie uma matriz bit de image bitmap na programação ANDROID
  • Possibilidade de replace / aplicair estilo no layout incluído com <include> tag?
  • 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); } 

  • Versões resolvidas paira aplicativo (22.0.0) e aplicativo de teste (21.0.3) diferem
  • Obtendo fonts da Web paira trabalhair com o phonegap e o Android - como?
  • Mantendo o último item visível de um ListView quando o tamanho do ListView muda
  • Como faço paira criair uma atividade visível em cima da canvas de bloqueio
  • Android, Posso usair putExtra paira passair vários valores
  • Substitua pairâmetros de path comuns em retrofit 2 com okhttp
  • 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.