如何解决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 举报,一经查实,本站将立刻删除。