2015-07-28 43 views
4

我有一個Android Best Practice問題。我不得不遵循以下代碼,這很好用,但我認爲它不太優雅。所以,我的問題是:在哪一點活動生命週期很好開始另一項活動?當開始另一個活動的好時機

public class LoginActivity extends ActionBarActivity { 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    ParentPreferences parentPreferences = new ParentPreferences(getApplicationContext()); 
    if (parentPreferences.isPassExists()) { 
     Intent i = new Intent(this, MainActivity.class); 
     startActivity(i); 
    } else { 
     setContentView(R.layout.login); 
    } 
} 
} 

任務大概是:如果父母已經做出了密碼保護的應用程序,比我們並不需要顯示LoginActivity。我不知道,活動是否「有益於」發起活動,何時完成onCreate或其他生命週期方法。

你有什麼想法的傢伙?

+0

不要忘記完成()您的LoginActivity – Blackbelt

+0

Thx!爲什麼在這裏完成需要如果我不添加完成,但是我沒有明顯的歷史記錄? – Karoly

+0

noHistory負責它 – Blackbelt

回答

3

我認爲更好的方法是創建LauncherActivity,並從他們開始activitys:

例如:

 public class LauncherActivity extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     ParentPreferences parentPreferences = new ParentPreferences(getApplicationContext()); 
     Intent intent; 
     if (parentPreferences.isPassExists()) { 
      intent = new Intent(this, MainActivity.class); 
     } else { 
      intent = new Intent(this, LoginActivity.class); 

     } 
     intent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY) 
     startActivity(i); 
    } 
    } 

更新時間: 指的Activity | Android Developer

enter image description here

onCreate是第一個生命週期e方法,最好在A活動剛剛開始時啓動活動B,並且不會膨脹任何佈局

+0

hm,我同意。您的解決方案有點更好,但仍然會損害或不會傷害(這是我的問題)LauncherActivity,因爲我們從onCreate啓動了另一項活動。 – Karoly

+0

從onCreate發起活動是最佳實踐 –

+1

謝謝謝爾蓋!我是否可以請求解釋爲什麼或提供官方文檔的鏈接?如果你這樣做,請添加爲答案,以便我可以接受它。 – Karoly

-1

我認爲最適合您的解決方案是添加一個SplashScreen或像「假」屏幕。 在這裏,你檢查他是否已經登錄,並基於它開始正確的活動。

也許絕對最好的方法是用碎片來做,但你必須改變你的很多應用程序。

何時稱呼它,是的onCreate完美:)

0

我會在清單開始您的MainActivity或者無論你怎麼稱呼它。 MainActivity首先檢查用戶是否已登錄。如果不是,它會啓動LoginActivity,LoginActivity會在登錄後返回到onActivityResult()中。 這取決於用戶每次啓動應用程序時的登錄需求,或者只是一次,或者偶爾一次。如果使用必須每次都登錄,則可以使用LoginActivity開始。否則,每次啓動LoginActivity並傳​​遞給MainActivity(或其他)看起來都是浪費。 「浪費」不在於性能,而在於應用程序的清晰度。

相關問題