Android-返回活动时,GridView变慢

问题描述

我有一个MainActivity,它实现了一个具有2个片段的bottomNavigationView,即TvFragment和VideosFragment,在TvFragment中,我在其中实现了gridView。当我第一次运行该应用程序时,它显示MainActivity并且没有问题,但是当我在TvFragment中的gridview中选择一个项目时,它会导致下一个活动,即PlayerActivity来播放youtube视频。问题是,当我将后退按钮按到从PlayerActivity到MainActivity的上一个活动时,Gridview变得非常慢,但是当我转到另一个片段(即VideosFragment)或更改屏幕方向时,GridView会恢复正常。为什么会发生这种情况以及如何解决

这是我的MainActivity类:

FAIL in (responds-to-forceful-talking) (bob_test.clj:25)
expected: (= "Whatever." (bob/response-for "Let's go make out behind the gym!"))
  actual: (not (= "Whatever." nil))

}

TvFragment类:

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    BottomNavigationView bottomNavigationView = findViewById(R.id.bottom_navigation);
    bottomNavigationView.setonNavigationItemSelectedListener(navigationItemSelectedListener);

    getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,new TvFragment()).commit();
}

private BottomNavigationView.OnNavigationItemSelectedListener navigationItemSelectedListener = new BottomNavigationView.OnNavigationItemSelectedListener() {
    @Override
    public boolean onNavigationItemSelected(@NonNull MenuItem item) {
        Fragment selectedFragment = null;

        switch (item.getItemId()) {
            case R.id.nav_tv:
                selectedFragment = new TvFragment();
                break;
            case R.id.nav_videos:
                selectedFragment = new VideosFragment();
                break;
        }
        assert selectedFragment != null;
        getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,selectedFragment).commit();

        return true;
    }
};

}

VideosFragment类:

public class TvFragment extends Fragment {

String sCurrentVerison,sLatestVersion;
GridView gridView;
String[] daftar = {"ABCD Sing with Leo ","Baby Shark Song","Barbie","ChuChu TV","Masha and the Bear","Oddbods","PAW Patrol","POCOYO in ENGLISH","SpongeBob SquarePants","Talking Tom","the fairly odd parent","Thomas & Friends"};
String[] youtube_id = {"JqAs4X48Mb4","aXKn2Wh5XhU","vFT6d5ohDT4","HpQ28emmOCk","kpltsjdubpM","hDEvPlgyF9k","mF9QMYaaZzo","SaiqvmisG8s","EaauRBO-IcY","QzsfLSP6hkI","bf3G_VaxQ8s","dyeU8oNqtzM"};
ArrayList<String> img_url= new ArrayList<>();

@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater,@Nullable ViewGroup container,@Nullable Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragment_tv,container,false);

    for (String s : youtube_id) {
        img_url.add("http://img.youtube.com/vi/" + s + "/0.jpg");
    }

    new GetLatestVersion().execute();

    gridView = view.findViewById(R.id.gridviewfrag);

    CustomAdapter customAdapter = new CustomAdapter();
    gridView.setAdapter(customAdapter);


    gridView.setonItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> adapterView,View view,int position,long l) {
            Intent intent = new Intent(getActivity(),PlayerActivity.class);
            intent.putExtra("link",youtube_id[position]);
            startActivity(intent);
        }
    });

    return view;
}

private class CustomAdapter extends BaseAdapter {
    @Override
    public int getCount() {
        return daftar.length;
    }

    @Override
    public Object getItem(int position) {
        return null;
    }

    @Override
    public long getItemId(int position) {
        return 0;
    }

    @SuppressLint("ViewHolder")
    @Override
    public View getView(int position,View convertView,ViewGroup parent) {
        convertView = View.inflate(getActivity(),R.layout.row_data,null);

        TextView title = convertView.findViewById(R.id.judul);
        ImageView image = convertView.findViewById(R.id.gambar);


        title.setText(daftar[position]);
        Picasso.get().load(img_url.get(position)).into(image);
        return convertView;
    }
}

@SuppressLint("StaticFieldLeak")
private class GetLatestVersion extends AsyncTask<String,Void,String> {
    @Override
    protected String doInBackground(String... strings) {
        try {
            sLatestVersion = Jsoup
                    .connect("https://play.google.com/store/apps/details?id="
                            + Objects.requireNonNull(getActivity()).getPackageName())
                    .timeout(30000)
                    .get()
                    .select("div.hAyfc:nth-child(4)>"+
                            "span:nth-child(2) > div:nth-child(1)"+
                            "> span:nth-child(1)")
                    .first()
                    .ownText();
        } catch (IOException e) {
            e.printstacktrace();
        }
        return sLatestVersion;
    }

    @Override
    protected void onPostExecute(String s) {
        //Get current version
        sCurrentVerison = BuildConfig.VERSION_NAME;

        if (sLatestVersion != null) {
            //Version convert to float
            float cVersion = Float.parseFloat(sCurrentVerison);
            float lVersion = Float.parseFloat(sLatestVersion);
            //Check condition(latest version is greater than current version)
            if (lVersion > cVersion) {
                //Create update AlertDialog
                updatealertDialog();
            }
        }
    }
}

private void updatealertDialog() {
    //Initialize AlertDialog
    AlertDialog.Builder builder = new AlertDialog.Builder(Objects.requireNonNull(getActivity()),R.style.CustomDialogTheme);
    //Set title
    builder.setTitle(getResources().getString(R.string.app_name));
    //Set message
    builder.setMessage("Update Available");
    //set non cancelable
    builder.setCancelable(false);

    //On update
    builder.setPositiveButton("Update",new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialogInterface,int i) {
            //Open play Store
            startActivity(new Intent(Intent.ACTION_VIEW,Uri.parse("market://details?id=" + Objects.requireNonNull(getActivity()).getPackageName())));
            //dismiss AlertDialog
            dialogInterface.dismiss();
        }
    });

    //On cancel
    builder.setNegativeButton("Cancel",int i) {
            //Cancel AlertDialog
            dialogInterface.cancel();
        }
    });

    //show AlertDialog
    builder.show();
}

}

PlayerActivity类:

public class VideosFragment extends Fragment {
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater,@Nullable Bundle savedInstanceState) {
    return inflater.inflate(R.layout.fragment_videos,false);
}

}

我的错误日志猫:

public class PlayerActivity extends AppCompatActivity {

YouTubePlayerView youTubePlayerView;
String urlStream;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_player);

    youTubePlayerView = findViewById(R.id.youtube_player_view);
    //adding observer to youtubePlayerView for lifecycle such as auto release youtubePlayerView when activity is closed (running activity in background not allowed for apps who published in play store)
    getLifecycle().addobserver(youTubePlayerView);

    PlayerUiController playerUiController= youTubePlayerView.getPlayerUiController();
    playerUiController.enableLiveVideoUi(true);

    urlStream = Objects.requireNonNull(getIntent().getExtras()).getString("link");

    youTubePlayerView.addYouTubePlayerListener(new AbstractYouTubePlayerListener() {
        @Override
        public void onReady(@NonNull YouTubePlayer youTubePlayer) {
            //load video with parameter (url,timeStart)
            youTubePlayer.loadVideo(urlStream,0);
            super.onReady(youTubePlayer);
        }
    });

}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...