[英]Activity not started, its current task has been brought to the front
[英]How to detect if app has been started or brought to front?
我必須從圖標中檢測該應用程序已啟動多少次,或者從多任務視圖重新回到該應用程序的最前面。 我怎么做?
在您的onCreate()方法中,從SharedPreferences中讀取計數器,將其遞增並保存。
在您的onResume()方法中,對其他計數器執行相同的操作。
這堂課可以給你很大幫助
以下是一些示例代碼
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;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.