標籤:
Android平台上面可以通過好幾種方式得到Context :
1、通過Activity的this
2、getApplicationContext()
3、getParent
這三種各自得到的是不同的,正常的話應該建議使用Activity.this.這個是最不容易出現問題的使用方法, 如果使用了第二種或者第三種的時候,將在Activity關閉掉的時候可能會出現異常 還是老老實實的使用Activity.this來得到Context的引用
補充: 在顯示Dialog前檢測一下Activity是否運行結束 ,可以避免發生這個錯誤
檢查Activity是否運行:
GET_TASKS許可權,擷取啟動並執行活動
<uses-permission android:name="android.permission.GET_TASKS"/>
public static boolean isActivityRunning(Context mContext,String activityClassName){ ActivityManager activityManager = (ActivityManager) mContext.getSystemService(Context.ACTIVITY_SERVICE); List<ActivityManager.RunningTaskInfo> info = activityManager.getRunningTasks(1); if(info != null && info.size() > 0){ ComponentName component = info.get(0).topActivity; if(activityClassName.equals(component.getClassName())){ return true; } } return false; }
關於Android平台上面is not valid; is your activity running?