static 關鍵字,一般用來減少物件的例項化,減少記憶體空間,因為,它不需要new乙個物件即可以直接使用…有時候,我們為了方便外部呼叫內部類以及成員變數,所以將相應的方法和字段宣告為static,這在外部庫中使用較多,以及一些公共介面中使用較多.
在前面的android開發中,由於亂用static關鍵字,導致了未知的後果,頁面效果和功能一直沒有出來,所以,做個筆記,告誡自己…
功能例項如下:
class
mytaskshowadapter
extends
fragmentstatepageradapter
@override
public fragment getitem(int position)
@override
public
int getcount()
@override
public
int getitemposition(object object)
}
由乙個fragmentstatepageradapter,例項化多個碎片布局,然後,進入某乙個碎片中進行操作,我這裡主要是進行更新介面卡操作:
宣告一些變數(當時設成static了,主要是預防記憶體洩露【使用了handler來更新..】)
如:
private
static messageadapter adapter;
public
static
int task_id;
private
static
int stask_id;
taskshowfragment中有乙個更新介面卡的操作:
public
void updatefragmentadapter(final
int flag, final task_message message,int taskid)
@override
public
void handlemessage(message msg)}}
myhandler myhandler = new myhandler(taskshowfragment.this);
message msg = message.obtain();
msg.what = flag;
msg.obj = message;
myhandler.sendmessage(msg);
}}
這樣的處理造成的後果是:
1 在特定的碎片中進行更新介面卡操作,會造成介面卡不是當前碎片中的介面卡更新
分析原因: 將messageadapter宣告成了靜態,所以,每次都只例項化一次物件,所以,每次的更新都是在第乙個例項化的adapter中去了….
2 更新的內容沒有插入到當前任務中的資料庫中
分析原因:同上…
修改後:
private messageadapter adapter;
public
int task_id;
private
int stask_id;
public
void updatefragmentadapter(final
int flag, final task_message message,int taskid)
@override
public
void handlemessage(message msg)}}
myhandler myhandler = new myhandler(taskshowfragment.this);
message msg = message.obtain();
msg.what = flag;
msg.obj = message;
myhandler.sendmessage(msg);
}}
總結:
static 關鍵字,雖然我們都知道它的書面定義,平時也有實踐,但是由於沒有真正的理解或者是沒有應用到適應的場景,反而會造成適得其反的效果… 編碼其實有時候,就在一些小點上出問題了,所以,告誡自己…下次別犯這麼低階的錯誤,找到問題,解決問題….別急躁,加油!!
this關鍵字 static關鍵字
1.當成員變數和區域性變數重名,可以用關鍵字this來區分 this 代表物件,代表那個物件呢?當前物件 this就是所在函式所屬物件的引用 簡單說 那個物件呼叫了this所在的函式,this就代表哪個物件 this也可以用於在建構函式中呼叫其他建構函式 注意 只能定義在建構函式的第一行,因為初始化...
Java this關鍵字,static關鍵字
1,this.屬性,this.方法,表示當前物件的屬性,當前類的方法 2,this,表示當前物件,當前正在操作這個方法的物件就是當前物件 3,使用this 引數若干 可以呼叫當前類的構造方法,如果,構造方法之間相互呼叫,則有要求 一 this 必須放在首行,二 至少有乙個構造方法是沒有呼叫this ...
static關鍵字 final 關鍵字
特點 隨著類的載入而載入,也就是說靜態會隨著類的消失而消失,說明他的生命週期最長 靜態變數 static 關鍵字修飾成員變數,使用 類名.變數名 的形式來訪問,也可以使用 例項物件.變數名 的形式來訪問。靜態方法 static 關鍵字修飾成員函式,靜態方法可以使用 類名.方法名 的形式來訪問,也可以...