簡體   English   中英

intent上的intent標志startActivity(i);

[英]intent flag over intent startActivity(i);

   @Override
                public void onClick(View view) {
                    // Launching News Feed Screen
                    Intent i = new Intent(getApplicationContext(), Profile.class);
                    startActivity(i);
                }
            });

與使用此代碼相比,使用此代碼有什么區別?

Intent i = new Intent(CurrentActivityName.this, NextActivityName.class);
i.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
startActivity(i);

第一個使用getApplicationContext()啟動意圖。 應用程序上下文附加到應用程序的生命周期,並且在應用程序的整個生命周期中始終是相同的。 因此,如果您正在使用Toast,則可以使用應用程序上下文,甚至可以使用活動上下文(兩者),因為Toast可以在應用程序中的任何位置引發,並且不附加到窗口。

第二個使用Activity上下文。 活動上下文附加到活動的生命周期,如果引發活動的onDestroy,則可以將其破壞。 如果要啟動新活動,則必須在其Intent中使用活動的上下文,以便新的啟動活動連接到當前活動(就活動堆棧而言)。

因此,每當您需要操縱視圖然后使用Activity-Context時,只要使用Application-Context就足夠了。

來源這個答案有所不同,何時使用getApplication(),getApplicationContext(),getBaseContext()和someClass.this問題。

另外,閱讀上述一些鏈接將有幫助:

獲取上下文的各種方法之間有什么區別?

getApplicationContext(),getBaseContext(),getApplication(),getParent()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM