編輯:關於Android編程
前幾天做一個小應用,需要用到在service中調用Activity, 但是發現總是出現ANR,百度了下,發現各種說法,不過經過嘗試,發現問題不大,只需要加一句代碼就足夠了,代碼如下:
public class XXXService extends Service { public void onCreate() { super.onCreate(); //撥打電話 Intent call = new Intent("android.intent.action.CALL", Uri.parse("tel:110")); call.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(call); } } public class XXXService extends Service { public void onCreate() { super.onCreate(); //撥打電話 Intent call = new Intent("android.intent.action.CALL", Uri.parse("tel:110")); call.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(call); }
關鍵語句是:call.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 究其原因可能是android系統考慮到穩定性(容易出現ANR)。
可以看一下官方文檔中對於startActivity()方法的描述:
Note that if this method is being called from outside of an Activity Context, then the Intent must include the FLAG_ACTIVITY_NEW_TASK launch flag. This is because, without being started from
an existing Activity, there is no existing task in which to place the new activity and thus it needs to be placed in its own separate task.
大致的意思是這樣的:請注意,如果一個外部的Activity Context調用此方法,那麼,Intent對象必須包含 FLAG_ACTIVITY_NEW_TASK標志,這是因為,待創建的Activity並沒有從一個已經存在的Activity啟動(任務棧中並沒有此Activity),它並沒有已經存在的任務,因此它需要被放置在自己獨立的任務中(也就是在任務棧中新建一個任務)。
一、實現ListView下拉刷新第一步:添加頂部下拉加載界面,即ListView的header頭布局1、創建layout布局文件head_layout2、創建一個自定義L
AndroidStudio 的SVN 安裝和使用方法與我以前用的其他IDE 都有很大差別,感覺特麻煩,網上相關資料很少,貌似現在 Git 比較流行,之前有用過 githu
1.介紹首先看下支付寶上芝麻信用分的效果圖:2.思路確定雷達圖中心點坐標 繪制多邊形及連接線 根據維度值繪制覆蓋區域 繪制分數 繪制每個維度的標題文字和圖標3.實現獲取布
由於項目上的需要側滑條目展示收藏按鈕,記得之前代碼家有寫過一個厲害的開源控件 AndroidSwipeLayout 本來准備直接拿來使用,但是看過 issue 發現現在有