第一部分介紹了PRotector,并實現(xiàn)了一個最簡單的Protector:OnceProtector
第二部分將實現(xiàn)一個TimeProtector
我們先來設(shè)想他所具有的功能:
1。沒有到指定時間,他是處于激活狀態(tài)的(check函數(shù)返回true);
2。過了指定時間,他就不能激活;
3。一旦過期,即使用戶調(diào)整了時間也不再激活。
嗯,明確了目的,下面就來繼續(xù)。
涉及到了時間問題,就來說說如何處理時間。midp有Date類型,但是提供的功能非常有限。
構(gòu)造函數(shù)無法接受人們熟悉的字符串來初始化。
我們必須使用Calendar來做這些工作,當然,如果long在你眼里看來就是time(黑客帝國?)。。。
我是這樣處理的,看TimeProtector的構(gòu)造函數(shù):
public TimeProtector(MIDlet app,int year,int month,int date)
{
super(app);
Calendar c=Calendar.getInstance();
c.set(Calendar.YEAR,year);
c.set(Calendar.MONTH,month-1);
c.set(Calendar.DATE,date);
date_=c.getTime();
}
這里要注意一個問題,就是month-1的問題,set month 9就是10月的意思。
TimeProtector有一個字段date_,可以用date_.getTime()直接和System.currentTimeMillis()比較大小。
那么我們?nèi)绾螌崿F(xiàn)第三個設(shè)想呢?如何做到即使用戶修改時間也無法繼續(xù)使用呢?
不妨再用用RMS來做個標記,表明已經(jīng)過期:)
下面就是那個決定命運的check函數(shù):
public boolean check()
{
boolean r=true;
try
{
RecordStore rs=RecordStore.openRecordStore(NameRMS,true);
RecordEnumeration e=rs.enumerateRecords(null,null,false);
if(e.hasNextElement())
{
r=false;
}
else
{
if(date_.getTime()<System.currentTimeMillis())
{
writeTag(rs);
r=false;
}
else
{
r=true;
}
}
rs.closeRecordStore();
}
catch(Exception ex)
{
r=false;
}
if(!r)
showUI();
return r;
}
好了,這就是我的TimeProtector的實現(xiàn),你是怎么實現(xiàn)的呢?
TimeProtector的使用:
在startApp的開頭加入if(!new TimeProtector(this,2005,10,19).check())return;
就是這么簡單。準備好,下一篇就來實現(xiàn)SNProtector:)
有意見或建議請聯(lián)系vmlinuxx@Gmail.com,共同學習,共同提高:)
(出處:http://www.survivalescaperooms.com)
新聞熱點
疑難解答