PendingIntent 傳 intent 問題

來源:互聯網
上載者:User

本文轉自:http://blog.csdn.net/sunny2come/article/details/7194109

1.首先說說AppWidget ,Appwidget是什麼就不用多說了,項目需求是案頭工具(視窗小組件)裡面顯示的內容可以相應的增加,減少,即Widget裡麵包含ListView,顯示一行行的資料,不過可惜的是Android3.0之前的版本並不支援List等複雜控制項,要實現只有修改原始碼,並編譯,這樣支援List的Widget只能跑在自己的系統上了。

後來想了下,其實也可以不用Listview 來實現該需求的,既然Widget能顯示TextView,那麼就可以用TextView顯示一行一行的資料,再加上分頁按鈕也可以查看多條資料了。響應分頁按鈕點擊事件就可以進行上下頁的查看。

2.Widget的點擊事件要用到PendingIntent,因為Widget只是嵌入到主畫面的控制項,所以它的事件處理並不方便和簡單,Android3.0之前的版本只提供OnClick事件的響應,還得通過Pendingintent還實現。

即用方法: view.setOnClickPendingIntent(id, pi); 

在這裡用PendingIntent遇到了一個問題,即有多個控制項(比如TextView)都響應Onclick事件,都發送PendingIntent,那麼如何區分這些Intent呢。

一開始用: PendingIntent pIntent5 = PendingIntent.getActivity(context, 0, intent, 
                                    PendingIntent.FLAG_UPDATE_CURRENT); 發現這樣執行個體化的PendingIntent,在Activity裡面擷取Intent時得到是最新的那麼Intent,即有的Intent不能傳過去。當然這裡情況是Intent啟動的Intent是同一個Activity,或者BroacastRecevier.

不過設定 PendingIntent pIntent5 = PendingIntent.getActivity(context, i, intent, 
                                    PendingIntent.FLAG_UPDATE_CURRENT); 的第二個值,即每個PendingIntent的第二個值不同,官方文檔說這個值沒有用好處,不過發現在這種情況貌似還是有用的。

3 .關於Activity的啟動模式。

Activity有四種啟動模式,不同情況要選擇不同的啟動模式。

程式中的情況是:接收到通知,通過Notification去啟動Activity,當然這裡也是要用到PendingIntent的。這之中遇到的問題是如果通過Notification已經啟動了該Activity,又來了Notifiaction,再點擊Notification啟動Activity,希望該Activity重新整理,擷取第二條Notification的資料,如果僅僅設定Activity的啟動模式為SingleTask,雖然Activity再啟動(調用OnResume()方法,不調用Oncreate方法),這樣得到Intent是上一個Notification的Intent,即Intent沒有重新整理。

要解決此問題需用到Activity中的方法OnNewIntent(),從字面就可以知道該方法的作用了,在Activity的OnResume方法中用OnNewIntent中的Intent就是最新的Intent的。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.