#5503
TEMA DESARROLLO DE UNA APP QUE UTILICEN TWIN SERVICES
Creo que hace falta un poco de documentación:
Creo que lo mejor es SOLO utilizar la página oficial de Android para desarrolladores para contestarte:
1-. Así funciona la multitarea en Android: http://developer.android.com/resources/articles/multitasking-android-way.html
2-. Leete el ciclo de vida de los servicios: (Sección "Managing the Lifecycle of a Service") sobretodo como el evento de onDestroy te permite realizar cualquier tipo de acción:
http://developer.android.com/guide/topics/fundamentals/services.html
3-. Creo que tendrias que darle un vistazo a esto:
http://developer.android.com/guide/topics/fundamentals/processes-and-threads.html
Hay 5 niveles de importancia:
- Foreground process.
- Visible process
- Service process
- Background process
- Empty process
Los process 3, 4 y 5 pueden ser completamente invisibles al usuario y en su código pueden hacer lo que le den la gana.
En Android conociendo el intent y creando el servicio tu puedes tener dos servicios diferentes que hagan lo mismo y simplemente se llamen mutuamente en su onDestroy con que en el manifest permitas que se abra desde allí.
Algo tan simple como eso implica que ese servicio está 100% del tiempo encendido.
Los permisos no te solucionan NADA y te voy ha explicar porque:
http://developer.android.com/guide/topics/security/security.html
Si miras que cosas te permite fijar en los permisos del Manifest.xml te permite fijar QUIEN puede arrancar tu servicio. (Para evitar que otras Apps te abran). Pero precisamente eso protege al desarrollador, no al usuario.
Vuelvo a mirar el android.Manifest.permissió y aqui no encuentro la que me diga "Esta app abre un servicio CUIDADO".
http://developer.android.com/reference/android/Manifest.permission.html
Esto ocurre porque hay servicios que se utilizan bindeados a la actividad en primer plano que no tienen ningún problema. El problema es lo que Android permite a los servicios que se quedan abiertos pese a que la app esté cerrándose.
Dices que los servicios en segundo plano no pueden superar el 5%, no he encontrado nada al respecto, pero por supuesto tienes el beneficio de la duda, asi que te pido un link oficial (o creible) al respecto.
Aún así, yo he realizado esto que te comento muchas veces, es instalar muchas aplicaciones que realizan esto. El problema no es que ellas gasten más o menos de 5% de CPU... Es el propio sistema cerrando los servicios dado que se queda sin RAM y ellos reabriendose, lo que provoca que el sistema vuelva ha estar sin ram y vuelva ha intentar cerrarlo. Creando un bucle en el que el sistema esta continuamente matando processos que se abren justo despues de ser cerrados.
Haz una cosa... hazlo... crea una app e intenta siempre tener un servicio abierto. Es facil, y una vez lo tengas lo pondrás a todas las apps que tengas ya que es un chollo tu app NUNCA esta cerrada, un chollo imcomprensible en otro sistema.
=============================================================
TEMA INSEGURIDAD DE LOS APKS FRENTE A LOS PROVISIONING PROFILES de IOS, ALIAS INSTALAR MIS PROPIAS APPS EN iOS SIN JB NI APPSTORE
Adicionalmente ante el desconocimiento de iOS del comentario de #5496 "Yo se una cosa que puede hacer un movil android marrullero recien salido de la caja que ios no puede hacer. Activar un check e instalarte tus propias apps, sin tener que hacer root, ni JB, ni leches."
Mi respuesta es tan simple como llana: Cuando YO hago una aplicación en iOS, puedo instalarla, no solo en mi iPhone/iPad, sino hasta en CIEN - 100 iPhones/iPads adicionales aparte del mio y puedo cambiar cualquiera de esos CIEN dispositivos por cualquier otro cuando me plazca.
Lee esto anda:
As you may know, apps distributed outside the app store require a mobile provisioning profile to authorize its use on a device. There are two types of such profiles:
Ad-hoc distribution. Any registered developer can get one of these, however each specific device where it is to be deployed must have its UDID submitted to Apple for inclusion in the profile. There is a limit of 100 devices in the profile. You may remove UDIDs, but within a (calendar?) year you can not add more than 100 unique IDs even if you have removed some.
Enterprise distribution. Only companies with an Enterprise License can get one of these profiles. They cost $299/year, and the company must have a Dun & Bradstreet's number in order to apply. Until late Sep 2010, the company also needed a minimum of 500 employees, but that requirement has been lifted. The major benefit of the enterprise profile is you do not have a device limit, nor do you need to enter the UDIDs of the devices where it will be deployed. Once you have the enterprise license, you get a distribution profile that can be installed on any device to authorize the application to run.
Dos tipos de distribuciones:
1-. Pagas 99$/año (es lo que cuesta ser desarrollador de iOS) y cuando quieres testear tu aplicación simplemente introduces los códigos de los dispositivos a los que TU como desarrollador QUIERES que puedan ejecutar tu aplicación. Y Además decides HASTA CUANDO quieres que puedan ejecutarla. En ese momento tansolo teniendo tu IPA esos dispositivos que en un entorno de desarrollo ya tendrán tu provisioning profile. Tansolo teniendo el iPA podran instalarse tu app y tenerla en el dispositivo sin pasar por la App Store.
2-. Pagas 299$ (siendo una empresa GRANDE) y tansolo teniendo el provisioning profile pueden instalar libremente el IPA no es necesario los UDIDs. Esto se utiliza para realizar apliaciones específicas para empresas que no quieres que estén disponibles para nadie más en el App Store.
Así que simplemente, que esté mejor montado, que IMPLIQUE ofrecer seguridad al desarrollador de que tu aplicación solo la ejecutará aquellos que el quiera y que no es necesario ni Jailbreak ni nada de eso que tu comentas.
Desconoces el sistema, y recuerda como desarrollador de Android, si pierdes el control de un APK y comienza a distribuirse sin que TU QUIERAS... LA HAS CAGADO... ya que no tienes forma humana de impedir que se instale.
Simplemente el método de iOS para desarrollar y probar una aplicación es INMENSAMENTE SUPERIOR a lo que Android hace con los APK!!!! Tener la visión simplista de tener el apk implica poderlo instalar es... casi... de crios... una empresa serie, un grupo importante de desarrollo nunca, repito NUNCA puede permitirse el descontrol que genera la nula seguridad que da Android en este aspecto.
Como coño testeo mi App en Android??? la envio a los testers??? y si la filtran???
Yo envio la de iOS sin miedo... total si se filtra tansolo al gente con jailbreak podrá instalarsela... que me la suda. Si envio la de Android y antes de finalizar el proceso de Quality Assurance de la aplicación esta acaba en los foros de medio mundo... la habre cagado.
============================
ACTUALIZACION ICS SIENDO DESARROLLADOR Y LA DIFERENCIA FRENTE A iOS
Como desarrollador a dia de hoy o me compro Galaxy Nexus (luego dicen que desarrollar en iOS pagando 99$ es caro cuando puedes probar iOS5 en un 3GS)... o mis apps no puedo probarlas en ICS. En iPhone las apps de la empresa donde trabajo se adaptarón a iOS5 en AGOSTO... mese antes de su salida gracias a las developer previews.
De hecho si quiero que mis apps funcionen bien en ICS tendré que hacerlo mediante emulador (que bien sabrás que no puedes probar las cosas bien ya que un RATON no es un DEDO). Por lo tanto yo NO PUEDO SABER si mis apps funcionan bien en ICS. Si no me gasto 600 €.
Ya que el movil que me recomendo google comprar a finales de 2010 (hace un año) era el Google Nexus One ya que Nexus S no habia salido.
Ese movil que Google hace un año me decia que era lo que necesitaba para desarrollar y testear Android, No podré probar ICS a no ser que un señor llamado Cyanogen en su casa me haga el favor de darme lo que GOOGLE tendria que darme y me niega...
En serio es que no veis la castaña enorme que es todo junto???