Autore Topic: Restart dell\'applicazione  (Letto 688 volte)

Offline ValerioAdo

  • Utente normale
  • ***
  • Post: 322
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Huawei Ascend g525
  • Sistema operativo:
    windows 8.1
Restart dell\'applicazione
« il: 19 Gennaio 2015, 13:19:28 CET »
0
Salve a tutti!

Per fare un "restart" dell'applicazione , ad esempio dopo una condivisione voglio tornare direttamente alla schermata iniziale, come si può fare?

Cercando in giro ho trovato questi due codici:
Codice (Java): [Seleziona]
Intent i = getBaseContext().getPackageManager()
             .getLaunchIntentForPackage( getBaseContext().getPackageName() );
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(i);


Codice (Java): [Seleziona]
Intent mStartActivity = new Intent(context, StartActivity.class);
int mPendingIntentId = 123456;
PendingIntent mPendingIntent = PendingIntent.getActivity(context, mPendingIntentId,    mStartActivity, PendingIntent.FLAG_CANCEL_CURRENT);
AlarmManager mgr = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
mgr.set(AlarmManager.RTC, System.currentTimeMillis() + 100, mPendingIntent);
System.exit(0);


il primo codice ho difficoltà a capirlo.... sinceramente ho sempre difficoltà sui codici tipo getpackageManager ecc...


il secondo mi da questo errore da logcat:
Codice: [Seleziona]
01-19 12:14:13.130: E/AndroidRuntime(770): FATAL EXCEPTION: main
01-19 12:14:13.130: E/AndroidRuntime(770): java.lang.NullPointerException
01-19 12:14:13.130: E/AndroidRuntime(770):         at android.content.ComponentName.<init>(ComponentName.java:75)
01-19 12:14:13.130: E/AndroidRuntime(770):         at android.content.Intent.<init>(Intent.java:3491)
01-19 12:14:13.130: E/AndroidRuntime(770):         at dit.softeksol.t2camera.CaptureImageFragment$11.onClick(CaptureImageFragment.java:662)
01-19 12:14:13.130: E/AndroidRuntime(770):         at android.view.View.performClick(View.java:4204)
01-19 12:14:13.130: E/AndroidRuntime(770):         at android.view.View$PerformClick.run(View.java:17355)
01-19 12:14:13.130: E/AndroidRuntime(770):         at android.os.Handler.handleCallback(Handler.java:725)
01-19 12:14:13.130: E/AndroidRuntime(770):         at android.os.Handler.dispatchMessage(Handler.java:92)
01-19 12:14:13.130: E/AndroidRuntime(770):         at android.os.Looper.loop(Looper.java:137)
01-19 12:14:13.130: E/AndroidRuntime(770):         at android.app.ActivityThread.main(ActivityThread.java:5041)
01-19 12:14:13.130: E/AndroidRuntime(770):         at java.lang.reflect.Method.invokeNative(Native Method)
01-19 12:14:13.130: E/AndroidRuntime(770):         at java.lang.reflect.Method.invoke(Method.java:511)
01-19 12:14:13.130: E/AndroidRuntime(770):         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
01-19 12:14:13.130: E/AndroidRuntime(770):         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
01-19 12:14:13.130: E/AndroidRuntime(770):         at dalvik.system.NativeStart.main(Native Method)

avete suggerimenti?

grazie mille a tutti!

Post unito: 19 Gennaio 2015, 15:33:06 CET
ok sono riuscito a fare ciò che volevo semplicemente facendo così:

Codice (Java): [Seleziona]
Intent restart= new Intent(activity,MainActivity.class);
                                startActivity(restart);


solo una piccola domanda, siccome l'intent di restart parte dopo un intent che uso per lo share come faccio a dire "fai il restart dopo lo share" ?
« Ultima modifica: 19 Gennaio 2015, 15:33:06 CET da ValerioAdo, Reason: Merged DoublePost »

Offline GabMarioPower

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 606
  • Respect: +152
    • Github
    • Google+
    • gabrielemariotti
    • GabMarioPower
    • Mostra profilo
  • Play Store ID:
    GAB+MARIO+DEV
  • Sistema operativo:
    Ubuntu 14.04 , Win 10
Re:Restart dell\'applicazione
« Risposta #1 il: 19 Gennaio 2015, 21:10:09 CET »
0
Ad ogni modo, mai usare questo:

Codice (Java): [Seleziona]
System.exit(0);

Offline Blodhgard

  • Utente junior
  • **
  • Post: 53
  • Respect: +3
    • Mostra profilo
    • Budget Veloce
  • Dispositivo Android:
    Nexus 5, S4 mini, Galaxy Tab S
  • Play Store ID:
    blodhgard
  • Sistema operativo:
    Windows 8.1
Re:Restart dell\'applicazione
« Risposta #2 il: 13 Febbraio 2015, 00:21:01 CET »
0
Per fare un restart io uso questo codice:

Codice (Java): [Seleziona]
Intent intent = new Intent(this, MainActivity.class);
                                intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                                startActivity(intent);

Praticamente uguale al primo che hai postato ma di più facile comprensione.

Offline wlf

  • Utente normale
  • ***
  • Post: 346
  • Respect: +8
    • Mostra profilo
  • Dispositivo Android:
    Xperia
Re:Restart dell\'applicazione
« Risposta #3 il: 03 Dicembre 2015, 18:00:22 CET »
0
Per fare un restart io uso questo codice:

Codice (Java): [Seleziona]
Intent intent = new Intent(this, MainActivity.class);
                                intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                                startActivity(intent);

Praticamente uguale al primo che hai postato ma di più facile comprensione.

Stavo cercando anche io qualcosa per un restart ma questo non mi convince per nulla! :(
Non è un restart vero e proprio, Application rimane vivo e vegeto; io ho controllato con 3 activity (SplashActiviy, MainActivity, SecondActivity facendo come dici tu. Posizionandomi sulla SecondActivity sono andato in pausa e sulla onResume ho fatto ripartire la SplashActiviy con una CLEAR_TOP. Mi sarei atteso che la MainActivity passasse per la onDestroy, invece no ... non viene minimamente toccata, e riparte con una onResume!
Quindi sostanzialmente questo non esegue un vero restart, ma solamente una resume ripartendo dalla prima Activity. :(

Se qualcuno ha qualche idea per fare un "vero" restart di tutta l'App, inizializzando dall'inizio anche Application ... ;)

Offline Ohmnibus

  • Utente senior
  • ****
  • Post: 665
  • Respect: +143
    • Github
    • Google+
    • @ohmnibus
    • Mostra profilo
    • Lords of Knowledge GdR
  • Dispositivo Android:
    Huawei P9 Lite
  • Play Store ID:
    Ohmnibus
  • Sistema operativo:
    Windows 7 x64
Re:Restart dell\'applicazione
« Risposta #4 il: 04 Dicembre 2015, 10:53:49 CET »
0
Prova:

Codice (Java): [Seleziona]
        finish(); //Termina l'activity corrente
        Intent i = getBaseContext().getPackageManager()
             .getLaunchIntentForPackage( getBaseContext().getPackageName() );
        //Oppure usi: Intent intent = new Intent(this, MainActivity.class);
        //dove "MainActivity" è l'activity principale
        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        startActivity(intent);
Ohmnibus
Le mie app su Play Store

È stata trovata una soluzione al tuo problema? Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato.

Offline wlf

  • Utente normale
  • ***
  • Post: 346
  • Respect: +8
    • Mostra profilo
  • Dispositivo Android:
    Xperia
Re:Restart dell\'applicazione
« Risposta #5 il: 04 Dicembre 2015, 11:19:53 CET »
0
Grazie Ohmnibus, ma anche questa soluzione non fa realmente ripartire l'App, non ripassa per la onCreate di Application. :(
Io sto cercando di ripartire in toto, anche perché Application inizializza i singleton e quindi vorrei inizializzare nuovamente tutto.  :-\