安卓零碎知識集中,安卓

來源:互聯網
上載者:User

安卓零碎知識集中,安卓

       由於安卓的知識點較多,平時動看看西看看,容易把東西搞混和搞忘,因此放在這裡集中起來,長期更新。

一、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?
  1. //建立Intent對象,action為ELITOR_CLOCK,附加資訊為字串“你該打醬油了”   
  2. Intent intent = new Intent("ELITOR_CLOCK");  
  3. intent.putExtra("msg","你該打醬油了");    
  4.   
  5. //定義一個PendingIntent對象,PendingIntent.getBroadcast包含了sendBroadcast的動作。   
  6. //也就是發送了action 為"ELITOR_CLOCK"的intent   
  7. PendingIntent pi = PendingIntent.getBroadcast(this,0,intent,0);    
  8.   
  9. //AlarmManager對象,注意這裡並不是new一個對象,Alarmmanager為系統級服務   
  10. AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE);    
  11.   
  12. //設定鬧鐘從目前時間開始,每隔5s執行一次PendingIntent對象pi,注意第一個參數與第二個參數的關係   
  13. // 5秒後通過PendingIntent pi對象發送廣播   
  14. 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?
  1. public class MyReceiver extends BroadcastReceiver  
  2. {  
  3.   
  4.     @Override  
  5.     public void onReceive(Context context, Intent intent)  
  6.     {  
  7.         // TODO Auto-generated method stub   
  8.         Log.d("MyTag", "onclock......................");  
  9.         String msg = intent.getStringExtra("msg");  
  10.         Toast.makeText(context,msg,Toast.LENGTH_SHORT).show();  
  11.     }  
  12.   
  13. }  

(3)在Manifest.xml中註冊廣播接收器:

[html] view plaincopy?
  1. <receiver android:name=".MyReceiver">  
  2.         <intent-filter>  
  3.             <action android:name="ELITOR_CLOCK" />  
  4.         </intent-filter>  
  5. </receiver>  



安卓學習的方法,之前零零碎碎的學了一些,簡單的布局控制項也了接了一些但是總的不知道怎學,看視頻

我覺得多加入安卓的論壇,多請教論壇上的高手。他們都有秘籍的偶學生正確的學習方法
兩千多年前孔子說過:“知之者不如好之者,好之者不如樂之者。”意思說,幹一件事,知道它,瞭解它不如愛好它,愛好它不如樂在其中。“好”和“樂”就是願意學,喜歡學,這就是興趣。興趣是最好的老師,有興趣才能產生愛好,愛好它就要去實踐它,達到樂在其中,有興趣才會形成學習的主動性和積極性,所以說:興趣是學習的不竭的動力源泉。只要你在平日的學習中做到課前預習找出重難疑問;積极參与課堂活動,認真思考問題注意歸納,主動發言收集激勵因子,那麼你學習的興趣就會更濃厚,你一定會更加喜歡文化課程的學習的。
要想取得好的學習成績,必須要有良好的學習習慣。習慣是經過重複練習而鞏固下來的穩重持久的條件反射和自然需要。建立良好的學習習慣,就會使自己學習感到有序而輕鬆。良好的學習習慣應是:耳、眼、腦、口、手並用,勤練習、多質疑、勤思考、重歸納、多應用,要注意總結規律性的東西,在學習過程中,要把教師所傳授的知識翻譯成為自己的特殊語言,並永久記憶在自己的腦海中。另外還要保證每天有一定的自學時間,以便加寬知識面和培養自己再學習能力。
1、課前預習。課前預習是提高聽課效果的一個重要策略。課前預習就是每節課前把本次課將要講授的內容進行預習,初步熟悉課程內容,找到聽課和理解的重點、痛點、疑點,記下自己的困惑之處、薄弱環節,帶著問題進課堂,以期在課堂學習中得以解決。
2、課堂學習。在課堂上要盡最大可能地跟著老師的思路走,儘可能使自己保持積極的聽課狀態,對於老師所講的重點、痛點、疑點要認真思考,通過聽講來解決預習時提出的問題,深化對問題的理解;通過聽課檢查和鍛煉自己的思維。並且不要滿足於老師的思路,應多思考一下有沒有其他的方法或可能。課堂的學習是一個雙向交流的過程:一方面老師講你聽,另一方面通過把你的反應反饋給老師,使老師知道自己所講的內容是否被你理解。因此你要積極地思考,認真地回答老師提出的問題,勇於發表自己的觀點和看法,使老師瞭解你現有的思維水平。要認真做好聽課筆記,記下課文的要點、重點、痛點,老師的解釋、提示和見解,自己的疑問和理解。俗話說“好記性不如爛筆頭”,再靈敏的腦袋也無法抗拒時間的消磨。做筆記是一種很好的輔助學習法,它可以協助你克服大腦記憶的限制,提示你回憶課堂教學內容。但是做筆記不能成為對教師內容的機械複製,它同時是一個思考的過程。做筆記一定要取捨得當,詳略適中,重點是老師提示的重點和自己不會的痛點。記筆記的過程必須科學分配自己的注意力,針對科目的難易有所側重:對於較難的科目,可以50%的時間聽講,50%的時間記筆記;對更注重靈活性和創造性的科目,90%的時間聽講,10%的時間記下提綱就足夠了。筆記必須要做到層次分明,一目瞭然,才更有價值。
3、課後複習。及時對聽課內容進行複習,進行積極的回憶和必要的重新學習,以加深對學習內容的總體理解,減少遺忘。而且,遺忘的進程是不均衡的,剛開始遺忘得較多、較快,以後遺忘得較少。根據遺忘發生的規律,可以採取適當的複習策略來克服遺忘,即在遺忘尚未產生之前,通過複習來避免遺忘,所以,在複習時要注意複習的時間安排。
根據有關研究,有效複習時間安排是:
第一次複習,學習結束後的5—10分鐘。
第二次複習,當天晚些時候或第二天。
第三次複習,一星期左右。
第四次複習,一個月左右。
第五次複習,半年左右。
根據上面的方法進行複習,可以比較有效地對抗遺忘。“活到老,學到老。”人離不開學習,生命不息,學習不止。學習是一個人終生獲得知識,取得經驗,轉化為行為的......餘下全文>>
 
安卓開發 需要掌握什知識?

java各種資料結構和文法方面還是要掌握齊全。

然後就可以開始Android了,Android的學習不是很難。

記住多看官方的文檔,然後找倆論壇,做兩個項目出來就差不多上手了。
 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.