Autore Topic: 3 snippets  (Letto 1212 volte)

Offline lo

  • Utente junior
  • **
  • Post: 65
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    nexus one
3 snippets
« il: 13 Febbraio 2011, 17:26:11 CET »
0
ciao a tutti,
non so se ho fatto bene ma, per non prendere troppo spazio, ho riunito in un unico post 3 questioni molto diverse fra loro.

1) qual'è il codice migliore per killare un'applicazione?
io per il momento utilizzo questo ma forse si può fare meglio:
Codice (Java): [Seleziona]
ActivityManager activityManager = (ActivityManager) context.getSystemService(ACTIVITY_SERVICE);
activityManager.killBackgroundProcesses(applicationPackageName);

2) in alcune applicazioni ho trovato una preferenza che permette di salvare il log dell'applicazione su file ai fini di debug.
qual'è il modo migliore per fare una cosa del genere?

3) alcune applicazioni, come "astro file manager", non hanno due versioni distinte gratuita e full ma quella a pagamento è una mini-applicazione che in qualche modo interagisce con quella principale.
come funziona in realtà un'architettura del genere?

ovviamente sarei grato anche solo di qualche spunto.
grazie mille!

Offline lo

  • Utente junior
  • **
  • Post: 65
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    nexus one
Re:3 snippets
« Risposta #1 il: 07 Marzo 2011, 09:16:12 CET »
0
per il 3 ho buttato giù queste righe:
Codice (Java): [Seleziona]
public class Ads {
        private static boolean proKeyExists(Context context) {
                try {
                        PackageManager packageManager = context.getPackageManager();
                        packageManager.getApplicationInfo(context.getPackageName() + ".pro", PackageManager.GET_META_DATA);
                        return true;
                } catch (NameNotFoundException e) {
                        // ...
                }
                return false;
        }

        public static void handleAdsView(Context context, Activity activity, int adsViewResource) {
                int visibility = View.VISIBLE;
                if (proKeyExists(context)) visibility = View.GONE;

                AdView adView = (AdView) activity.findViewById(adsViewResource);
                adView.setVisibility(visibility);
                if (visibility == View.VISIBLE) adView.requestFreshAd();
        }
}

poi nell'activity principale:
Codice (Java): [Seleziona]
@Override
public void onResume() {
        super.onResume();
               
        Ads.handleAdsView(this, this, R.id.ads);
}

che dite?

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:3 snippets
« Risposta #2 il: 07 Marzo 2011, 09:30:02 CET »
0
1) qual'è il codice migliore per killare un'applicazione?
io per il momento utilizzo questo ma forse si può fare meglio:
Codice (Java): [Seleziona]
ActivityManager activityManager = (ActivityManager) context.getSystemService(ACTIVITY_SERVICE);
activityManager.killBackgroundProcesses(applicationPackageName);

Ho sempre trovato brutto terminare brutalmente una applicazione invece che uscirne normalmente. E' un po' come spegnere il PC staccando la spina. Ti serve proprio questa modalità?

2) in alcune applicazioni ho trovato una preferenza che permette di salvare il log dell'applicazione su file ai fini di debug.
qual'è il modo migliore per fare una cosa del genere?

Se vuoi salvare il log di una applicazione che gira su un device fisico, secondo me l'applicazione aLogCat fa al caso tuo.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline lo

  • Utente junior
  • **
  • Post: 65
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    nexus one
Re:3 snippets
« Risposta #3 il: 07 Marzo 2011, 10:20:16 CET »
0
Citazione da: bradipao
Ho sempre trovato brutto terminare brutalmente una applicazione invece che uscirne normalmente. E' un po' come spegnere il PC staccando la spina. Ti serve proprio questa modalità?
no, anzi.
ho trovato
Codice (Java): [Seleziona]
ActivityManager.killBackgroundProcesses(String packageName)dici di usare questa?

Citazione da: bradipao
Se vuoi salvare il log di una applicazione che gira su un device fisico, secondo me l'applicazione aLogCat fa al caso tuo.
temo di essermi spiegato male.
vorrei implementare una preferenza, all'interno della mia applicazione, che permetta di salvare il log della stessa.
la mia idea sarebbe una CheckboxPreference "Salva log" che appena abilitata inizia a salvare il log sulla sdcard e, se disabilitata, interrompe la scrittura.
che ne dite di una cosa del genere?
Codice (Java): [Seleziona]
try {
    File filename = new File(Environment.getExternalStorageDirectory() + "/logfile.log");
    filename.createNewFile();
    String cmd = "logcat -d -f " + filename.getAbsolutePath();
    Runtime.getRuntime().exec(cmd);
} catch (IOException e) {
    e.printStackTrace();
}
grazie mille.

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3487
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:3 snippets
« Risposta #4 il: 07 Marzo 2011, 11:10:05 CET »
0

che ne dite di una cosa del genere?
Codice (Java): [Seleziona]
try {
    File filename = new File(Environment.getExternalStorageDirectory() + "/logfile.log");
    filename.createNewFile();
    String cmd = "logcat -d -f " + filename.getAbsolutePath();
    Runtime.getRuntime().exec(cmd);
} catch (IOException e) {
    e.printStackTrace();
}


Mi sa che in questo modo non ti salva il log solo della tua applicazione. Ma salva il logcat di tutto il sistema. Sarebbe da impostare un qualche filtro, magari con il pid dell'applicazione corrente.

Offline lo

  • Utente junior
  • **
  • Post: 65
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    nexus one
Re:3 snippets
« Risposta #5 il: 07 Marzo 2011, 11:15:03 CET »
0
giusto...
comunque mi confermi è il modo corretto per farlo?

grazie!

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3487
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:3 snippets
« Risposta #6 il: 07 Marzo 2011, 11:20:17 CET »
0
giusto...
comunque mi confermi è il modo corretto per farlo?

Non so, non ho mai provato a fare una cosa del genere...

Offline lo

  • Utente junior
  • **
  • Post: 65
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    nexus one
Re:3 snippets
« Risposta #7 il: 07 Marzo 2011, 11:24:12 CET »
0
ok, allora farò da cavia in prima persona ;)

un'utima cosa, mi farebbe piacere un parere anche sugli altri due punti.
i passaggi di codice che ho proposto sono accettabili o faresti diversamente...

grazie ancora.

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:3 snippets
« Risposta #8 il: 07 Marzo 2011, 11:25:03 CET »
0
Con aLogCat puoi impostare tutti i filtri che vuoi, e ti spedisce pure il log via email se ti serve. Può darsi non faccia al caso tuo, ma provare non costa molto.  :-)

Quanto al kill,  chiedevo: come mai ti occorre terminare "brutalmente" la tua app? Non puoi uscirne normalmente?
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline lo

  • Utente junior
  • **
  • Post: 65
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    nexus one
Re:3 snippets
« Risposta #9 il: 07 Marzo 2011, 11:33:01 CET »
0
Con aLogCat puoi impostare tutti i filtri che vuoi, e ti spedisce pure il log via email se ti serve. Può darsi non faccia al caso tuo, ma provare non costa molto.  :-)
si, ho l'applicazione aLogcat ma vorrei fare proprio una cosa diversa, integrare la funzionalità all'interno della mia applicazione :)

Quanto al kill,  chiedevo: come mai ti occorre terminare "brutalmente" la tua app? Non puoi uscirne normalmente?
no, non la mia.
sto creando il mio task killer (lo so, lo so, ce ne sono già un'infinità ma diciamo che sperimento ;) ).
devo quindi killare una serie di applicazioni, con "uscire normalmente" cosa intendi...

Offline Nicola_D

  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:3 snippets
« Risposta #10 il: 07 Marzo 2011, 13:09:01 CET »
0
IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia

Offline lo

  • Utente junior
  • **
  • Post: 65
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    nexus one
Re:3 snippets
« Risposta #11 il: 07 Marzo 2011, 13:34:34 CET »
0

Offline lo

  • Utente junior
  • **
  • Post: 65
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    nexus one
Re:3 snippets
« Risposta #12 il: 10 Marzo 2011, 13:55:53 CET »
0
ripropongo la domanda 1:

Codice (Java): [Seleziona]
ActivityManager activityManager = (ActivityManager) context.getSystemService(ACTIVITY_SERVICE);
activityManager.killBackgroundProcesses(applicationPackageName)

qualcuno ha un'idea migliore su come implementare la funzionalità "kill di un'applicazione" per la realizzazione di un task manager?
ad ogni modo, se non sbaglio, dovrebbe essere proprio il metodo che usa android per stoppare un'applicazione: ActivityManager
grazie.
« Ultima modifica: 10 Marzo 2011, 14:04:36 CET da lo »