我必須檢測應用程序從圖標中啓動了多少次,或者從多任務視圖中回到前面。我怎麼做?如何檢測應用程序是否已啓動或預先處理?
0
A
回答
1
這個類可以幫助你很多
以下是一些示例代碼
RunningTaskInfo foregroundTaskInfo = am.getRunningTasks(1).get(0); String foregroundTaskPackageName = foregroundTaskInfo .topActivity.getPackageName();
PackageManager pm = ForegroundAppService.this.getPackageManager();
PackageInfo foregroundAppPackageInfo;
foregroundAppPackageInfo = pm.getPackageInfo(foregroundTaskPackageName, 0);
String foregroundTaskAppName = foregroundAppPackageInfo.applicationInfo.loadLabel(pm).toString();
Drawable appicon=getPackageManager().getApplicationIcon(foregroundTaskPackageName);
iv.setImageDrawable(appicon); // Log.d("Foreground task ",foregroundTaskAppName); // Log.d("Size ",tasklist.size()+"");
Log.d("App Icon ------------------------------->",appicon+"");
if(Globals.tasklist.size()>=1)
{ String value="";
i=0;
for(HashMap<String, String> map: Globals.tasklist) {
Log.d("map ",map.get("appname"));
for(String str:map.keySet())
{
Log.d("str ",str);
String key=str;
value=map.get(str);
Log.d("Foreground App Name ",foregroundTaskAppName);
Log.d("Existing List Value ",value);
if(value.equals(foregroundTaskAppName))
{
flag=false;
Log.d("time ",map.get("apptime"));
foregroundAppTime = timeIncrement(Integer.parseInt(map.get("apptime")));
map.put("apptime", Integer.toString(foregroundAppTime));
Log.d("time ",map.get("apptime")); //// Log.d("Previous Time ",tasklist.get(key)+"");
HashMap<String,String> hs=new HashMap<String,String>();
hs=Globals.tasklist.get(i);
Set set=hs.entrySet();
Iterator ii = set.iterator();
if(ii.hasNext()) {
Map.Entry me = (Map.Entry)ii.next();
Log.d("Task -----------> ",me.getKey()+"");
Log.d("Time ----------->",me.getValue()+"");
// try // { // foregroundAppTime= timeIncrement((int)me.getValue()); // } // catch(Exception ex){Log.d("Error ",ex.getMessage());} // hs.put("apptime", Integer.toString(foregroundAppTime)); // Globals.tasklist.add(i, hs);
}
// Globals.appinfo.put("appname", foregroundTaskAppName); // Globals.appinfo.put("apptime", Integer.toString(foregroundAppTime)); // Globals.tasklist.add(Globals.appinfo);
break;
}
else
{
flag=true;
}
}
if(flag==false)
{
break;
}
i++;
}
if(flag)
{
Log.d("Foreground App Name in End ",foregroundTaskAppName);
HashMap<String, String> appinfo = new HashMap<String, String>();
appinfo.put("appname", foregroundTaskAppName);
appinfo.put("apptime", "0");
Globals.tasklist.add(appinfo);
}
}
else
{
HashMap<String, String> appinfo = new HashMap<String, String>();
appinfo.put("appname", foregroundTaskAppName);
appinfo.put("apptime", "0");
Globals.tasklist.add(appinfo);
}
} catch (Exception e) {
// TODO Auto-generated catch block
Log.d("Error ",e.getMessage());
}
Log.d("Running Task " ,"---------------Start-----------------");
for(HashMap<String, String> map: Globals.tasklist) {
for(String str:map.keySet())
{
String key=str;
String value=map.get(str);
Log.d("Key ",key);
Log.d("Value ",value);
}
}
Log.d("Running Task " ,"---------------End-----------------");
}}, 0, 1000);
return START_STICKY;
}
int timeIncrement(int time)
{
time++; // Log.d("New Time ",time+"");
return time;
}
2
在您的onCreate()方法中,從SharedPreferences中讀取您的計數器並將其保存。
在你的onResume()方法中,你的另一個計數器也是這樣。
+0
我有一些活動。無法保證在用戶「最小化」應用程序之前最後訪問過哪個活動。另外,當從一個活動轉移到另一個活動時,再回到第一個活動時,onResume也會被調用,並且用戶從未離開過該應用程序。 –
相關問題
- 1. 檢測應用程序是否開始使用手動處理(按下圖標)或在Windows啓動時啓動
- 2. 預處理程序可以判斷SystemVerilog是否已啓用?
- 3. 如何檢測某個特定應用程序是否已啓動?
- 4. 如何通過雙擊文件來檢測應用程序是否已啓動?
- 5. 檢測應用程序是否已關閉或暫停
- 6. 如何知道應用程序池是否已遠程啓動?
- 7. 如何檢測SELinux是否在Android應用程序中啓用?
- 8. 如何檢測桌面應用程序是否已被修改?
- 9. 如何檢測自上次啓動應用程序後iPhone是否已重新啓動
- 10. 如何檢查應用程序或dmg是否已簽名?
- 11. Windows Store 10,Windows Phone 10檢查應用程序是否已預先加載
- 12. C#如何檢查事件處理程序是否已完成
- 13. 檢測應用程序是否從應用程序的「外部」啓動/恢復
- 14. 檢測應用程序啓動時是否保持了轉換
- 15. 通過鼠標點擊檢測應用程序是否啓動?
- 16. 如何檢測Android應用程序啓動器/啓動器
- 17. 如何在VB6中檢測事件處理程序是否已分配?
- 18. 如何檢測應用程序啓動類型(自動啓動還是手動)?
- 19. 如何檢測是否有任何原生應用程序在Android中啓動
- 20. Android可以應用程序檢測它是如何啓動的?
- 21. 檢查使用預處理器,如果應用程序是一個winforms或asp.net
- 22. 如何檢查IntentService是否已啓動
- 23. 如何檢測用戶是否通過單擊應用程序圖標主動重新啓動應用程序?
- 24. 如何檢查互聯網是否可用或在Android應用程序啓動?
- 25. 如何檢測應用程序啓動時手指是否被按下?
- 26. 你如何使用編譯指示啓動預處理程序?
- 27. 我的程序如何檢測,是否通過mpirun啓動
- 28. 檢查電池優化是否已啓用或不適用於應用程序
- 29. 檢測何時嵌入碼頭無法啓動處理程序
- 30. 檢測應用程序啓動
當應用程序啓動,'的onCreate()被調用,然後''的onResume()'。當從多任務處理視圖出現時,調用'onResume()',但不調用'onCreate()'。 – Hemanth
如果您從下一個活動返回到上一個活動,還會調用onResume –