簡體   English   中英

在.hprof文件android studio中,$意味着什么

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM