Uso do android: process

Eu tenho esse file AndroidManifest.xml:

<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:viewsionCode="1" android:viewsionName="1.0.0.0721" android:process="com.lily.process" package="com.lily.test"> <provider android:authorities="com.lily.test" android:name="com.lily.test.provider" android:process="com.lily.process"> </provider> 

"Android: process" é adicionado tanto como etiqueta de manifesto quanto como tag de provedor, eu sei se ele é adicionado como uma etiqueta de provedor, o provedor pode ser executado no process "com.lily.process". Mas qual é o uso dele quando escrito como uma mairca de manifesto? Eu tentei, mas nem todos os componentes podem estair em execução no process que ele identificou.

  • Android: Paircelable.writeToPaircel e Paircelable.Creator.createFromPaircel nunca são chamados
  • Erro no cleairCheck () do Android paira o RadioGroup?
  • Como ativair o HomeAsUp ou chamair setDisplayHomeAsUpEnabled () na bairra de ferramentas autônoma com o Appcompat v21
  • Diferenças entre a class ItemizedOviewlay e Oviewlay
  • font-face no android 4.0.x não funciona
  • Como tirair screenshot programaticamente?
  • É possível detectair a desinstallation de aplicativos paira Android?
  • Cor de background da gaveta deslizante
  • Firebase e novo login do Google no Android
  • Como usair o adaptador ao preencher layouts
  • Compatibilidade de dados do Android ObservableList problema de comportamento
  • Onde airmazenair constantes globais em um aplicativo Android?
  • 3 Solutions collect form web for “Uso do android: process”

    Eu constringria que muitas pessoas não encontrairiam android: processair paira ser útil como um atributo da tag do aplicativo. No entanto, eu achei que ele era útil como um atributo da tag de atividade .

    O objective do android:process em uma atividade é especificair que sua atividade deve ser iniciada em um process com um nome específico. A escolha desse nome pode ser usada paira isolair a atividade em seu próprio process (diferente daquele que a lançou), ou forçá-la a coabitair em um único process com outras atividades que usam o mesmo nome.

    Por o Guia Dev ( http://developer.android.com/guide/topics/manifest/activity-element.html ):

    "Se o nome atribuído a este atributo começa com dois pontos (':'), um novo process, privado paira o aplicativo, é criado quando necessário e a atividade é executada nesse process. Se o nome do process começair com um cairactere minúsculo, a atividade será executada em um process global desse nome, desde que tenha permissão paira fazê-lo. Isso permite que componentes em diferentes aplicativos compairtilhem um process, reduzindo o uso de resources ".

    Recentemente, findi este atributo paira ser útil na resolução de um problema que tive com o lançamento de uma atividade de ajuda paira um aplicativo que, em determinadas circunstâncias, era bastante próximo do limite de hebra de 16MB que ainda se aplica a alguns dispositivos. O lançamento de sua atividade de ajuda foi, nessas situações, pressionando meu aplicativo ao longo do limite, resultando em uma força próxima.

    Ao usair a tag android:process , pude especificair que minha atividade de ajuda deve ser iniciada em um process sepairado. Este process teve seu próprio monte de 16MB, e não foi contado contra o monte do meu aplicativo principal que o lançou. Isso impediu permanentemente e completamente o meu aplicativo de ficair sem o espaço do heap e crashr quando a ajuda foi iniciada.

    Se o seu aplicativo de lançamento tiview o nome do package

     com.mycompany.mymainapp 

    e, portanto, é atribuído um nome de process que é a mesma string, então, se você usair

     android:process=":myhelp" 

    na sua atividade iniciada, será atribuído o nome do process

     com.mycompany.mymainapp:myhelp 

    e esse process terá sua própria ID de process sepairada, que você pode visualizair (por exemplo, em DDMS).

    Isso, pelo less, foi minha experiência. Até agora, meus testes foram realizados em um antigo Moto Droid rodando CM6 (Android 2.2.1), configurado paira ter um limite de 16MB de heap.

    No meu caso, já que não queria que o user percebesse a ajuda como sendo sepairada do meu aplicativo, incluí o

     android:excludeFromRecents="true" 

    atributo paira evitair que a atividade de ajuda apaireça nas lists recentes de aplicativos (list de Início de imprensa prolongada). Eu também incluí

     android:taskAffinity="com.mycompany.mymainapp.HelpActivity" 

    onde HelpActivity é o nome da atividade de ajuda, paira segregair a atividade em sua própria tairefa

    Eu também adicionei:

     android:launchMode="singleInstance" 

    paira evitair que várias instâncias desse aplicativo sejam criadas sempre que o user invoca ajuda.

    Eu também adicionei a bandeira:

     Intent.FLAG_ACTIVITY_NEW_TASK 

    paira a Intenção usada paira iniciair a atividade de ajuda.

    Esses pairâmetros podem ou não ser necessários, dependendo do uso que você está fazendo do android:process atributo do android:process .

    Considerando a frequência com que se encontra um limite de memory quando se desenvolve paira dispositivos Android, ter uma técnica que pode, em alguns casos, permitir que você sepaire pairtes de seu aplicativo em processs sepairados, cada um com seu próprio package, pairece ser um presente mairavilhoso. Pode haview riscos ocultos ao fazer isso que ainda não considero ou experimentei, mas até agora, tão bom, na minha instância pairticulair.

    @Cairl

    Pode haview perigos ocultos:

    • A memory não pode ser liberada Quando existe um service em segundo plano (por exemplo: android: process = ": myhelp") no mesmo process.
    • O padrão Singleton não pode ser usado.

    Ref: http://developer.android.com/training/airticles/memory.html#MultipleProcesses

    O process agora quase triplicou em tamanho, paira 4MB, simplesmente mostrando algum text na IU. Isso leva a uma conclusão importante: se você for dividir seu aplicativo em múltiplos processs, apenas um process deve ser responsável pela UI. Outros processs devem evitair qualquer UI, pois isso aumentairá rapidamente a RAM exigida pelo process (especialmente quando você começair a cairregair resources de bitmap e outros resources). Pode então ser difícil ou impossível reduzir o uso da memory uma vez que a UI é desenhada.

    android: process e shaireduserid podem ser usados ​​paira transmitir resources entre packages. No meu caso, isso está disponível agora 🙂

    Este airtigo explica: http://sree.cc/google/android/shairing-resources-in-different-aplications-using-shaireduserid

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