getApplication和Activity.this的區別
首先需要注意以下這段程式碼:(彈出視窗的時候是不會執行onPause方法的,因為彈出視窗屬於當前的Activity的一部分,這個視窗是掛載在這個Activity上的,而且要想彈出對話方塊就必須要設定掛載在哪個Activity上,而這裡使用getApplication()就不可以了,因為getApplication()是整個應用程式的上下文環境,彈出視窗不可能掛載在整個程式的上下文環境中。)
@Override
protected void onPause() {
super.onPause();
System.out.println("失去焦點");
Toast.makeText(getApplicationContext(), "失去焦點", Toast.LENGTH_SHORT).show();
}
public void alertDialog(View view){
new AlertDialog.Builder(this)
.setTitle("彈出視窗")
.setMessage("我是彈出視窗")
.show();
}
![](https://i.iter01.com/images/6bda087a523b3f694c8bf933952c96fe4d7865ed8c546dd81f4491a808ab44a7.png)
凡是可以用getApplication()的地方都可以用Activity.this。
什麼時候使用getApplication()?
getApplication()存活的時間非常長。例如繫結服務,Activity在繫結服務的時候,必須在Activity銷燬的時候解綁服務,如果沒有在onDestory裡進行解綁服務,那麼就會出異常,說服務所繫結的上下文環境已經不存在了。
此時如果想讓服務存在的時間長一點,就可以用getApplication().bindService()進行服務的繫結,這樣在Activity退出的時候就不會報錯了。
總結:想讓它存在的時間長點就用getApplication()
什麼時候使用Activity.this?
Activity.this存活的時間非常短,只要進行後退操作,這個Activity就執行了onDestory方法銷燬了,也就結束了生命週期。
總結:想讓它存在的時間短點就用Activity.this(常用)
相關文章
- Android之getApplication()、getApplicationContext的區別AndroidAPPContext
- ../和./和/的區別
- LinkedList和ArrayList的區別、Vector和ArrayList的區別
- http和https的區別/get和post的區別HTTP
- 從getApplicationContext和getApplication再次梳理Android的Application正確用法APPContextAndroid
- ||和??的區別
- /*和/**的區別
- 到底getApplicationContext和getApplication是不是返回同一個物件?APPContext物件
- jquery $(this) 和this的區別jQuery
- JQuery this和$(this)的區別jQuery
- T和?的區別
- makefile =和:=的區別
- ++a和a++的區別
- ./ 和sh 的區別
- 和區別
- springmvc和springboot的區別SpringMVCSpring Boot
- SDK和API的區別?API
- ArrayList和LinkedList的區別?
- button和submit的區別MIT
- MTV和MVC的區別MVC
- hadoop和spark的區別HadoopSpark
- rpop 和 brpop的區別
- WebApi和MVC的區別WebAPIMVC
- GET和POST的區別?
- ArrayList和LinkedList的區別
- WBS和TASK的區別?
- JavaScript中for in 和for of的區別JavaScript
- innerText 和 textContent 的區別?
- var 和 let 的區別
- @JsonProperty和@JsonAlias的區別JSON
- POST 和 GET 的區別
- sass和less的區別
- MySQL和Oracle的區別MySqlOracle
- sizeThatFits 和 sizeToFit的區別
- GitHub和GitLab的區別GithubGitlab
- Js中for in 和for of的區別JS
- isKindOfClass和isMemberOfClass的區別
- innerText和textContent的區別
- cookie和session的區別CookieSession