- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
每当我进入其中一项 Activity (我将其命名为主要 Activity
)时,内存和 CPU 使用率都会突然激增,从而导致延迟,如下所示。
我还在我的 MainActivity
中使用了 RecyclerView,它使用 row_stream_songs.xml
。
我设法发现它是由row_stream_songs.xml
上的ImageView引起的(代码在下面),但是我确实需要那里的ImageView。
//Fetch stream song data
SongData songData = new SongData();
ArrayList<Song> streamSong = songData.getSongList(0);
//Setup the recycler view to place
//song data.
RecyclerView recyclerView = (RecyclerView) findViewById(R.id.streamRecycler);
StreamSongAdapter songAdapter = new StreamSongAdapter(this, streamSong);
recyclerView.setAdapter(songAdapter);
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
DividerItemDecoration dividerItemDecoration = new DividerItemDecoration(recyclerView.getContext(), linearLayoutManager.getOrientation());
recyclerView.setLayoutManager(linearLayoutManager);
recyclerView.addItemDecoration(dividerItemDecoration);
//When the user selects a song.
songAdapter.setOnItemClickListener(new StreamSongAdapter.OnItemClickListener(){
@Override
public void onItemClick(LinearLayout b, View v, Song obj, int position){
Intent intent = new Intent(MainActivity.this, PlayMusic.class);
intent.putExtra("songData",obj.getSongData());
intent.putExtra("songType", 1);
startActivity(intent);
}
});
public class StreamSongAdapter extends RecyclerView.Adapter<StreamSongAdapter.SongHolder> {
private ArrayList<Song> song;
private Context context;
private OnItemClickListener onItemClickListener;
public StreamSongAdapter(Context _context, ArrayList<Song> _song){
context = _context;
song = _song;
}
public interface OnItemClickListener{
void onItemClick(LinearLayout b, View v, Song obj, int position);
}
public void setOnItemClickListener(final OnItemClickListener _onItemClickListener){
onItemClickListener = _onItemClickListener;
}
@Override
public StreamSongAdapter.SongHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View myView = LayoutInflater.from(context).inflate(R.layout.row_stream_songs, parent, false);
return new SongHolder(myView);
}
//Adds the row layout to the Recycler view.
@Override
public void onBindViewHolder(final StreamSongAdapter.SongHolder holder, final int position) {
holder.songName.setText(song.get(position).getSongName());
int resId = AppUtil.getImageIdFromDrawable(context, song.get(position).getSongImage());
holder.songImage.setImageResource(resId);
holder.artistName.setText(song.get(position).getSongArtist());
//Handle song selection
holder.linearLayout.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
if (onItemClickListener != null){
onItemClickListener.onItemClick(holder.linearLayout, v, song.get(position), position);
}
}
});
}
@Override
public int getItemCount() {
return song.size();
}
//Gets data for each view in the recyclerview.
class SongHolder extends RecyclerView.ViewHolder{
TextView songName , artistName;
ImageView songImage;
LinearLayout linearLayout;
SongHolder(View itemView) {
super(itemView);
artistName = (TextView) itemView.findViewById(R.id.streamSongArtist);
songName = (TextView) itemView.findViewById(R.id.streamSongTitle);
songImage = (ImageView) itemView.findViewById(R.id.streamSongImage);
linearLayout = (LinearLayout) itemView.findViewById(R.id.rowMusicSelect);
}
}
}
(Song
是一个类,它存储 SongId、songTitle、歌曲艺术家姓名、可绘制图像名称、songURL、songDuration 和一个 boolean 值,该 boolean 值表明歌曲是否要在线流式传输。 )
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context="sg.edu.tp.melodia.Activities.MainActivity"
tools:showIn="@layout/app_bar_main">
<android.support.v7.widget.RecyclerView
android:id="@+id/streamRecycler"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:layout_editor_absoluteX="8dp"
android:layout_marginTop="60dp"
tools:layout_editor_absoluteY="8dp" />
</RelativeLayout>
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="wrap_content"
>
<LinearLayout
android:layout_width="match_parent"
android:id="@+id/rowMusicSelect"
android:layout_height="wrap_content"
android:padding="20dp"
android:background="@drawable/clickable1"
android:orientation="horizontal">
<LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:orientation="vertical">
<TextView
android:id="@+id/streamSongTitle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="16sp"
android:text="TextView" />
<TextView
android:id="@+id/streamSongArtist"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:text="TextView" />
</LinearLayout>
<ImageView
android:id="@+id/streamSongImage"
android:layout_width="45dp"
android:layout_height="45dp"
android:scaleType="centerCrop"
app:srcCompat="@mipmap/ic_launcher" />
</LinearLayout>
</android.support.v7.widget.CardView>
如上所述,我发现每当我删除 row_stream_songs.xml
上的 ImageView 时,内存和 CPU 使用率就会正常下降。但我需要 ImageView 在那里。
最佳答案
关于java - 内存使用量突然激增,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45612831/
我希望有人能解释为什么我的应用程序在加载时使用不同数量的 RAM。我说的是直接使用 exe 的编译版本。这是一个非常基本的应用程序,在应用程序的启动中没有条件分支。然而,每次我启动它时,RAM 量都在
我有一个 inode 使用率为 100% 的磁盘驱动器(使用 df -i 命令)。但是在大量删除文件后,使用率仍然是 100%。 那么正确的做法是什么? 磁盘空间使用量较少的磁盘驱动器怎么可能有Ino
假设我与分支有一个智能合约,其中每个分支都有不同数量的操作。 if (someCondition) { // do operations costing 10 gas } else { //d
是否有一种工具可以在提交到 NEAR 网络之前估算合约调用将产生多少 gas? 最佳答案 目前最好的估计是用runtime-standalone ,它可以处理交易而不必担心共识/网络。这意味着您可以创
我正在使用最新的 SDK 开发适用于 Windows Azure 的应用程序。 目前我正在使用缓存实现 session 提供程序,但模拟器完全不成比例: 缓存被实现为“非常小的”辅助角色(最大 768
我正在为我的 Logstash RAM 问题寻找答案,因为它几乎是 100%。我为它做了很多搜索,但他们没有为我工作。下面的代码是我的 logstash.conf 文件。我认为它需要一些小改动。 Lo
我已经阅读了这里有关此问题的所有其他问题以及互联网其他地方的许多文章。根据this site ,最大内存使用量遵循以下公式: Max memory = [-Xmx] + [-XX:MaxPermSiz
我需要以编程方式增加 Android 中的 RAM 使用量,以观察它随时间的变化。我该怎么做? 我尝试生成很多自定义对象,但生成后意外地 RAM 使用量减少了...我更改了对象数量、结构等,但没有任何
我们使用带有 MMFiles 存储引擎的 ArangoDB 3.3.14(社区版)来处理相对较大的数据集(备份时会超过 30 GB)。我们使用 ECS 在 Docker 容器内运行它。我们的主机虚拟机
我收到了 Hostgator 发来的一条说明,表明他们限制了我对 MYSQL 的访问,因为我的网站使用了太多资源。 通常,在这种情况下,我只会恢复备份以查看最近的更改是否会产生错误。但是,除了写了一些
我使用 TMimeMess 来解码基于 SMTP 服务器的传入电子邮件在突触上。 我发现用于解码 50MB MIME 消息(带有附件),TMimeMess 使用了 600-800MB 的内存。 在这里
我正在打包适用于 iOS 和 Android 的 Adobe Air 应用程序,并且我的 (RAM) 内存使用量超过 100MB。我的游戏(RPG)中有大量 Assets 。 Assets 的数量
我是一名优秀的程序员,十分优秀!