[英]What does the $ means in .hprof file android studio
啟動Gc並在android studio監視器中單擊dump java堆后,將顯示以下圖像:
在DialogFrag $ 1中,DialogFrag類旁邊的$是什么意思? (DialogFrag只是一個擴展Dialogfragment的類)
我應該只有這個類的一個實例,但正如你在DialogFrag $ 1旁邊看到的總計數是7,這是否意味着我有內存泄漏?
編輯:這是我的對話框片段類
public class DialogFrag extends DialogFragment {
AsyncTask<Void,Void,Void> asyncTask;
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder alertdialog=new AlertDialog.Builder(getActivity());
alertdialog.setTitle("Solution:");
View view = getActivity().getLayoutInflater().inflate(R.layout.dialogfrag,null);
final MyView myview= (MyView) view.findViewById(R.id.myview);
myview.setVisibility(View.INVISIBLE);
alertdialog.setView(view);
asyncTask=new AsyncTask<Void, Void, Void>() {
@Override
protected void doInBackground(Void... voids) {
//compute something here
}
@Override
protected void onPostExecute(Void param) {
super.onPostExecute(param);
getDialog().findViewById(R.id.progress).setVisibility(View.GONE);
myview.setVisibility(View.VISIBLE);
}
});
asyncTask.execute();
alertdialog.setPositiveButton("SHOW", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
if(!(asyncTask.getStatus()== AsyncTask.Status.FINISHED)){
asyncTask.cancel(true);
}
asyncTask=null;
dismiss();
}
});
alertdialog.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
if(!(asyncTask.getStatus()== AsyncTask.Status.FINISHED)){
asyncTask.cancel(true);
}
asyncTask=null;
dismiss();
}
});
Dialog dialog=alertdialog.create();
dialog.getWindow().getAttributes().windowAnimations = R.style.MyDialogViewAnimation;
return dialog;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
getDialog().getWindow().setGravity(Gravity.CENTER_HORIZONTAL | Gravity.TOP);
getDialog().requestWindowFeature(Window.FEATURE_NO_TITLE);
return super.onCreateView(inflater, container, savedInstanceState);
}
在DialogFrag $ 1中,DialogFrag類旁邊的$是什么意思?
$number
表示匿名內部類,一個例子是new View.OnClickListener() {...}
。
但正如你在DialogFrag $ 1旁邊看到的那樣,總數是7,這是否意味着我有內存泄漏?
也許,你有七次旋轉手機嗎?
請記住在適當的生命周期方法中取消注冊偵聽器和BroadcastReceiver
。 盡量避免使用靜態字段。
帶有$
的Class名稱代表您的內部類 。
命名法是ClassName$InnerClassName
當您看到數字而不是實際名稱時,它們是在您的方法中創建的匿名內部類。
例如ClassName$1
在你的情況下:
問題是AsyncTask定義為匿名類asyncTask=new AsyncTask<Void, Void, Void>()
...創建一個單獨的類並在需要時創建類的實例。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.