安卓零碎知識集中,安卓
由於安卓的知識點較多,平時動看看西看看,容易把東西搞混和搞忘,因此放在這裡集中起來,長期更新。
一、AlarmManager的使用
1、AlarmManager,顧名思義,就是“提醒”,是Android中常用的一種系統層級的提示服務,在特定的時刻為我們廣播一個指定的Intent。簡單的說就是我們設定一個時間,然後在該時間到來時,AlarmManager為我們廣播一個我們設定的Intent,通常我們使用 PendingIntent,PendingIntent可以理解為Intent的封裝包,簡單的說就是在Intent上在加個指定的動作。在使用Intent的時候,我們還需要在執行startActivity、startService或sendBroadcast才能使Intent有用。而PendingIntent的話就是將這個動作包含在內了。
定義一個PendingIntent對象。
PendingIntent pi = PendingIntent.getBroadcast(this,0,intent,0);
2、AlarmManager的常用方法有三個:
(1)set(int type,long startTime,PendingIntent pi);
該方法用於設定一次性鬧鐘,第一個參數表示鬧鐘類型,第二個參數表示鬧鐘執行時間,第三個參數表示鬧鐘響應動作。
(2)setRepeating(int type,long startTime,long intervalTime,PendingIntent pi);
該方法用於設定重複鬧鐘,第一個參數表示鬧鐘類型,第二個參數表示鬧鐘首次執行時間,第三個參數表示鬧鐘兩次執行的間隔時間,第三個參數表示鬧鐘響應動作。
(3)setInexactRepeating(int type,long startTime,long intervalTime,PendingIntent pi);
該方法也用於設定重複鬧鐘,與第二個方法相似,不過其兩個鬧鐘執行的間隔時間不是固定的而已。
3、三個方法各個參數詳悉:
(1)int type: 鬧鐘的類型,常用的有5個值:AlarmManager.ELAPSED_REALTIME、 AlarmManager.ELAPSED_REALTIME_WAKEUP、AlarmManager.RTC、 AlarmManager.RTC_WAKEUP、AlarmManager.POWER_OFF_WAKEUP。
AlarmManager.ELAPSED_REALTIME表示鬧鐘在手機睡眠狀態下不可用,該狀態下鬧鐘使用相對時間(相對於系統啟動開始),狀態值為3;
AlarmManager.ELAPSED_REALTIME_WAKEUP表示鬧鐘在睡眠狀態下會喚醒系統並執行提示功能,該狀態下鬧鐘也使用相對時間,狀態值為2;
AlarmManager.RTC表示鬧鐘在睡眠狀態下不可用,該狀態下鬧鐘使用絕對時間,即當前系統時間,狀態值為1;
AlarmManager.RTC_WAKEUP表示鬧鐘在睡眠狀態下會喚醒系統並執行提示功能,該狀態下鬧鐘使用絕對時間,狀態值為0;
AlarmManager.POWER_OFF_WAKEUP表示鬧鐘在手機關機狀態下也能正常進行提示功能,所以是5個狀態中用的最多的狀態之一,該狀態下鬧鐘也是用絕對時間,狀態值為4;不過本狀態好像受SDK版本影響,某些版本並不支援;
(2)long startTime: 鬧鐘的第一次執行時間,以毫秒為單位,可以自訂時間,不過一般使用目前時間。需要注意的是,本屬性與第一個屬性(type)密切相關,如果第一個參數對 應的鬧鐘使用的是相對時間(ELAPSED_REALTIME和ELAPSED_REALTIME_WAKEUP),那麼本屬性就得使用相對時間(相對於 系統啟動時間來說),比如目前時間就表示為:SystemClock.elapsedRealtime();如果第一個參數對應的鬧鐘使用的是絕對時間 (RTC、RTC_WAKEUP、POWER_OFF_WAKEUP),那麼本屬性就得使用絕對時間,比如目前時間就表示 為:System.currentTimeMillis()。
(3)long intervalTime:對於後兩個方法來說,存在本屬性,表示兩次鬧鐘執行的間隔時間,也是以毫秒為單位。
(4)PendingIntent pi: 綁定了鬧鐘的執行動作,比如發送一個廣播、給出提示等等。PendingIntent是Intent的封裝類。需要注意的是,如果是通過啟動服務來實現鬧鐘提 示的話,PendingIntent對象的擷取就應該採用Pending.getService(Context c,int i,Intent intent,int j)方法;如果是通過廣播來實現鬧鐘提示的話,PendingIntent對象的擷取就應該採用 PendingIntent.getBroadcast(Context c,int i,Intent intent,int j)方法;如果是採用Activity的方式來實現鬧鐘提示的話,PendingIntent對象的擷取就應該採用 PendingIntent.getActivity(Context c,int i,Intent intent,int j)方法。如果這三種方法錯用了的話,雖然不會報錯,但是看不到鬧鐘提示效果。
4.舉例說明:定義一個鬧鐘,5秒鐘重複響應。
(1)MainActivity,在onCreate中完成:
[java] view plaincopy?
- //建立Intent對象,action為ELITOR_CLOCK,附加資訊為字串“你該打醬油了”
- Intent intent = new Intent("ELITOR_CLOCK");
- intent.putExtra("msg","你該打醬油了");
-
- //定義一個PendingIntent對象,PendingIntent.getBroadcast包含了sendBroadcast的動作。
- //也就是發送了action 為"ELITOR_CLOCK"的intent
- PendingIntent pi = PendingIntent.getBroadcast(this,0,intent,0);
-
- //AlarmManager對象,注意這裡並不是new一個對象,Alarmmanager為系統級服務
- AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE);
-
- //設定鬧鐘從目前時間開始,每隔5s執行一次PendingIntent對象pi,注意第一個參數與第二個參數的關係
- // 5秒後通過PendingIntent pi對象發送廣播
- am.setRepeating(AlarmManager.RTC_WAKEUP,System.currentTimeMillis(),5*1000,pi);
那麼啟動MainActivity之後,由於定義了AlarmManager am,並且調用了am.setRepeating(...)函數,則系統每隔5s將會通過pi啟動intent發送廣播,其action為ELITOR_CLOCK。所以我們需要在Manifest.xml中註冊一個receiver,同時自己定義一個廣播接收器類。
(2)定義一個廣播接收器類MyReceiver,重寫onReceive()函數。
[java] view plaincopy?
- public class MyReceiver extends BroadcastReceiver
- {
-
- @Override
- public void onReceive(Context context, Intent intent)
- {
- // TODO Auto-generated method stub
- Log.d("MyTag", "onclock......................");
- String msg = intent.getStringExtra("msg");
- Toast.makeText(context,msg,Toast.LENGTH_SHORT).show();
- }
-
- }
(3)在Manifest.xml中註冊廣播接收器:
[html] view plaincopy?
- <receiver android:name=".MyReceiver">
- <intent-filter>
- <action android:name="ELITOR_CLOCK" />
- </intent-filter>
- </receiver>
安卓學習的方法,之前零零碎碎的學了一些,簡單的布局控制項也了接了一些但是總的不知道怎學,看視頻
我覺得多加入安卓的論壇,多請教論壇上的高手。他們都有秘籍的偶學生正確的學習方法
兩千多年前孔子說過:“知之者不如好之者,好之者不如樂之者。”意思說,幹一件事,知道它,瞭解它不如愛好它,愛好它不如樂在其中。“好”和“樂”就是願意學,喜歡學,這就是興趣。興趣是最好的老師,有興趣才能產生愛好,愛好它就要去實踐它,達到樂在其中,有興趣才會形成學習的主動性和積極性,所以說:興趣是學習的不竭的動力源泉。只要你在平日的學習中做到課前預習找出重難疑問;積极參与課堂活動,認真思考問題注意歸納,主動發言收集激勵因子,那麼你學習的興趣就會更濃厚,你一定會更加喜歡文化課程的學習的。
要想取得好的學習成績,必須要有良好的學習習慣。習慣是經過重複練習而鞏固下來的穩重持久的條件反射和自然需要。建立良好的學習習慣,就會使自己學習感到有序而輕鬆。良好的學習習慣應是:耳、眼、腦、口、手並用,勤練習、多質疑、勤思考、重歸納、多應用,要注意總結規律性的東西,在學習過程中,要把教師所傳授的知識翻譯成為自己的特殊語言,並永久記憶在自己的腦海中。另外還要保證每天有一定的自學時間,以便加寬知識面和培養自己再學習能力。
1、課前預習。課前預習是提高聽課效果的一個重要策略。課前預習就是每節課前把本次課將要講授的內容進行預習,初步熟悉課程內容,找到聽課和理解的重點、痛點、疑點,記下自己的困惑之處、薄弱環節,帶著問題進課堂,以期在課堂學習中得以解決。
2、課堂學習。在課堂上要盡最大可能地跟著老師的思路走,儘可能使自己保持積極的聽課狀態,對於老師所講的重點、痛點、疑點要認真思考,通過聽講來解決預習時提出的問題,深化對問題的理解;通過聽課檢查和鍛煉自己的思維。並且不要滿足於老師的思路,應多思考一下有沒有其他的方法或可能。課堂的學習是一個雙向交流的過程:一方面老師講你聽,另一方面通過把你的反應反饋給老師,使老師知道自己所講的內容是否被你理解。因此你要積極地思考,認真地回答老師提出的問題,勇於發表自己的觀點和看法,使老師瞭解你現有的思維水平。要認真做好聽課筆記,記下課文的要點、重點、痛點,老師的解釋、提示和見解,自己的疑問和理解。俗話說“好記性不如爛筆頭”,再靈敏的腦袋也無法抗拒時間的消磨。做筆記是一種很好的輔助學習法,它可以協助你克服大腦記憶的限制,提示你回憶課堂教學內容。但是做筆記不能成為對教師內容的機械複製,它同時是一個思考的過程。做筆記一定要取捨得當,詳略適中,重點是老師提示的重點和自己不會的痛點。記筆記的過程必須科學分配自己的注意力,針對科目的難易有所側重:對於較難的科目,可以50%的時間聽講,50%的時間記筆記;對更注重靈活性和創造性的科目,90%的時間聽講,10%的時間記下提綱就足夠了。筆記必須要做到層次分明,一目瞭然,才更有價值。
3、課後複習。及時對聽課內容進行複習,進行積極的回憶和必要的重新學習,以加深對學習內容的總體理解,減少遺忘。而且,遺忘的進程是不均衡的,剛開始遺忘得較多、較快,以後遺忘得較少。根據遺忘發生的規律,可以採取適當的複習策略來克服遺忘,即在遺忘尚未產生之前,通過複習來避免遺忘,所以,在複習時要注意複習的時間安排。
根據有關研究,有效複習時間安排是:
第一次複習,學習結束後的5—10分鐘。
第二次複習,當天晚些時候或第二天。
第三次複習,一星期左右。
第四次複習,一個月左右。
第五次複習,半年左右。
根據上面的方法進行複習,可以比較有效地對抗遺忘。“活到老,學到老。”人離不開學習,生命不息,學習不止。學習是一個人終生獲得知識,取得經驗,轉化為行為的......餘下全文>>
安卓開發 需要掌握什知識?
java各種資料結構和文法方面還是要掌握齊全。
然後就可以開始Android了,Android的學習不是很難。
記住多看官方的文檔,然後找倆論壇,做兩個項目出來就差不多上手了。