- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在尝试创建一个社交媒体应用程序。但它需要大约 300mb 内存。所以我的主页上有 5 个包含帖子的 fragment 。总体内存使用量为 250-300mb
然后为了测试,我禁用了这些 fragment ,但在没有任何大操作的情况下家庭 Activity 仍然消耗 140mb。
所以,
这是我的类(class)
public class HomePage extends AppCompatActivity {
private Drawer result = null;
private Boolean isCoverEdit = false, isProfileEdit = false;
String username;
private RelativeLayout splash;
private Toolbar toolbar;
private StorageReference mStorage;
private ProgressDialog progressDialog;
private ImageView searchBtn;
private AHBottomNavigationViewPager fragContainer;
private AHBottomNavigation bottomNavigation;
private ImageView postBtn;
private View child;
private ImageView cover;
private CircleImageView profilePic;
private TextView star;
private TextView id;
private PopupMenu p;
@Ghi đè
được bảo vệ void onCreate(Gói savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home_page);
if (FirebaseAuth.getInstance().getCurrentUser() == null) {
Intent i = new Intent(HomePage.this, Login.class);
bắt đầuHoạt động(i);
hoàn thành();
} khác {
getUsername();
initiateViews();
setupOnClickListeners();
setupBottomNavigation();
mStorage = FirebaseStorage.getInstance().getReference();
progressDialog = new ProgressDialog(this);
}
}
chức năng
private void initiateViews() {
splash = findViewById(R.id.splash);
searchBtn = findViewById(R.id.search);
fragContainer = findViewById(R.id.frame);
toolbar = findViewById(R.id.toolbar);
bottomNavigation = findViewById(R.id.bottom_navigation);
postBtn = findViewById(R.id.post);
child = getLayoutInflater().inflate(R.layout.header, null);
profilePic = child.findViewById(R.id.pic);
id = child.findViewById(R.id.id);
cover = child.findViewById(R.id.cover);
star = child.findViewById(R.id.karma);
}
private void getUsername() {
username = new UserData(this).getUsername();
if (username==null){
FirebaseDatabase.getInstance().getReference().child("users").child(FirebaseAuth.getInstance().getCurrentUser().getUid()).child("username").addListenerForSingleValueEvent(new ValueEventListener() {
@Ghi đè
public void onDataChange(DataSnapshot dataSnapshot) {
username = dataSnapshot.getValue(String.class);
SharedPreferences settings = getSharedPreferences("AyePref", MODE_PRIVATE);
SharedPreferences.Editor editor = settings.edit();
editor.putString("username", username);
editor.apply();
setupNavigationDrawer();
FirebaseDatabase.getInstance().getReference().child("userdata").child(username).child("token").setValue(FirebaseInstanceId.getInstance().getToken());
}
@Ghi đè
public void onCancelled(DatabaseError databaseError) {
}
});
}khác {
setupNavigationDrawer();
FirebaseDatabase.getInstance().getReference().child("userdata").child(username).child("token").setValue(FirebaseInstanceId.getInstance().getToken());
}
}
private void setupNavigationDrawer() {
result = new DrawerBuilder()
.withActivity(HomePage.this)
.withHeader(child)
.withDisplayBelowStatusBar(false)
.withTranslucentStatusBar(false)
.withDrawerLayout(R.layout.material_drawer_fits_not)
.addDrawerItems(
new PrimaryDrawerItem().withName("Favourites").withIcon(GoogleMaterial.Icon.gmd_forum),
new PrimaryDrawerItem().withName("Settings").withIcon(GoogleMaterial.Icon.gmd_settings),
new PrimaryDrawerItem().withName("Contact").withIcon(GoogleMaterial.Icon.gmd_contact_mail),
new PrimaryDrawerItem().withName("Commands").withIcon(GoogleMaterial.Icon.gmd_help),
new PrimaryDrawerItem().withName("Log Out").withIcon(GoogleMaterial.Icon.gmd_security)
)
.withOnDrawerItemClickListener(new Drawer.OnDrawerItemClickListener() {
@Ghi đè
public boolean onItemClick(View view, int position, IDrawerItem drawerItem) {
if (drawerItem instanceof Nameable) {
FragmentTransaction t = getSupportFragmentManager().beginTransaction();
chuyển đổi (vị trí) {
case 3:
final Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND);
emailIntent.setType("plain/text");
emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, new String[]{"ayesupport@yandex.com"});
startActivity(Intent.createChooser(emailIntent, "Send mail..."));
phá vỡ;
case 5:
phá vỡ;
case 2:
Intent i= new Intent(HomePage.this, SettingsActivity.class);
bắt đầuHoạt động(i);
phá vỡ;
case 4:
Intent i2 = new Intent(HomePage.this,CommandsPage.class);
startActivity(i2);
phá vỡ;
}
}
trả về false;
}
}).build();
FirebaseDatabase.getInstance().getReference().child("userdata").child(username).addListenerForSingleValueEvent(new ValueEventListener() {
@Ghi đè
public void onDataChange(DataSnapshot dataSnapshot) {
thử {
Glide.with(HomePage.this).load(dataSnapshot.child("pic").getValue(String.class)).override(100,100).thumbnail(0.5f).into(profilePic);
//Glide.with(HomePage.this).load(dataSnapshot.child("cover").getValue(String.class)).into(cover);
} catch (Ngoại lệ e) {
e.printStackTrace();
}
id.setText(username);
star.setText("4.7");
}
@Ghi đè
public void onCancelled(DatabaseError databaseError) {
}
});
}
private void setupBottomNavigation() {
AHBottomNavigationItem item1 = new AHBottomNavigationItem("Topics", new IconicsDrawable(this, GoogleMaterial.Icon.gmd_whatshot));
AHBottomNavigationItem item2 = new AHBottomNavigationItem("Rooms", new IconicsDrawable(this, GoogleMaterial.Icon.gmd_group_work));
AHBottomNavigationItem item3 = new AHBottomNavigationItem("Contacts", new IconicsDrawable(this, GoogleMaterial.Icon.gmd_people));
AHBottomNavigationItem item4 = new AHBottomNavigationItem("Leaderboard", new IconicsDrawable(this, GoogleMaterial.Icon.gmd_star));
AHBottomNavigationItem item5 = new AHBottomNavigationItem("Stats", new IconicsDrawable(this, GoogleMaterial.Icon.gmd_insert_chart));
bottomNavigation.addItem(item1);
bottomNavigation.addItem(item2);
bottomNavigation.addItem(item3);
bottomNavigation.addItem(item4);
bottomNavigation.addItem(item5);
bottomNavigation.setInactiveColor(R.color.md_grey_800);
bottomNavigation.setAccentColor(R.color.md_grey_600);
bottomNavigation.setTitleState(AHBottomNavigation.TitleState.ALWAYS_HIDE);
fragContainer.setOffscreenPageLimit(4);
HomePageAdapter adapter = new HomePageAdapter(getSupportFragmentManager());
setSupportActionBar(toolbar);
toolbar.setNavigationIcon(R.drawable.ic_menu_white_24dp);
//fragContainer.setAdapter(adapter);
bottomNavigation.setOnTabSelectedListener(new AHBottomNavigation.OnTabSelectedListener() {
@Ghi đè
public boolean onTabSelected(int position, boolean wasSelected) {
//fragContainer.setCurrentItem(position);
return wasSelected;
}
});
}
全类:đây在该类中没有添加 fragment ,但内存使用量为 120-140
我敢肯定,我在所有其他 Activity 或 fragment 中重复同样的错误。一旦我知道了问题,我就可以为其他部分修复它。
需要帮助:(
câu trả lời hay nhất
我觉得很正常。它实际上并没有吃掉 140MB 的 RAM。在新的 Android 监视器上,AS3 数字与以前的 AS2 有点不同。在user guide here , 它是这样写的:
When compared to memory counts from the previous Android Monitor tool, the new Memory Profiler records your memory differently, so it might seem like your memory use is now higher. The Memory Profiler monitors some extra categories that increase the total, but if you only care about the Java heap memory, then the "Java" number should be similar to the value from the previous tool.
And although the Java number probably doesn't exactly match what you saw in Android Monitor, the new number accounts for all physical memory pages that have been allocated to your app's Java heap since it was forked from Zygote. So this provides an accurate representation of how much physical memory your app is actually using.
Currently, the Memory Profiler also shows some false-positive native memory usage in your app that actually belongs to the profiling tools. Up to 10MB of memory is added for ~100k objects. In a future version of the tools, these numbers will be filtered out of your data.
我曾经在我以前的应用程序上看到 200MB 以上的内容,其中有 4 个带有底部导航的 fragment (但在 Leakcanary 上没有发现任何内容)。
关于java - Activity 占用 140mb 内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48353645/
Tôi đang viết một phương thức Java có chữ ký sau. void Logger(Phương thức phương thức, Object[] args); Nếu một phương thức (chẳng hạn như ABC() ) gọi phương thức này Logger, thì nó sẽ
Tôi mới làm quen với Java. Vấn đề của tôi là chương trình Java của tôi không thể tìm thấy JButton mà tôi đang cố sử dụng làm tệp hình ảnh. (Hiện tại mã này không làm gì cả vì tôi chỉ có được giao diện mong muốn trước tiên). Đây là mã lớp chính của tôi: packag
Được rồi, hôm nay tôi sẽ thực hiện một cuộc phỏng vấn và tôi đã viết mã Java được nhiều năm. Trong cuộc phỏng vấn, anh ấy nói "Việc thu gom rác Java là một vấn đề hóc búa và tôi có một số người bạn đang cố gắng tìm ra nó. Bạn thấy thế nào về vấn đề này?". Cô ấy đang cố nói dối tôi phải không? Hoặc cả cuộc đời tôi
Bạn tôi đưa cho tôi một câu đố để giải. Nó diễn ra như thế này: Có 100 người trong số họ, đến lượt mình, thực hiện như sau.
Nếu tôi biên dịch một ứng dụng sử dụng mã Java 5 thành mã byte, liệu tệp .class kết quả có chạy trong Java 1.4 không? Nếu cái sau hoạt động và tôi đang cố gắng sử dụng Jav trong ứng dụng Java 1.4 của mình
Có những câu hỏi về lý do tại sao Java không hỗ trợ các kiểu không dấu và một số câu hỏi về việc xử lý các kiểu không dấu. Tôi đã thực hiện một số tìm kiếm và có vẻ như Scala cũng không hỗ trợ các kiểu dữ liệu không dấu. Hạn chế là Java và S
Tôi chỉ muốn biết liệu mã byte được tạo trong một phiên bản java có chạy trên các phiên bản java khác Câu trả lời hay nhất Thông thường, mã byte có thể chạy trên các phiên bản java mới hơn mà không cần sửa đổi. Nó sẽ không chạy trên các phiên bản cũ hơn trừ khi bạn sử dụng các tham số đặc biệt (
Tôi có một câu hỏi cơ bản về việc thực thi các chương trình java trong dấu nhắc lệnh. Trên một số máy chúng ta cần chỉ định -cp. (đường dẫn lớp) thực thi chương trình java cùng lúc (test là tên file java và file .class tồn tại trong cùng thư mục) jav
Tôi đã đọc StackOverflow được một thời gian và tôi mới có đủ can đảm để đặt câu hỏi. Tôi 20 tuổi và hiện đang học tại một trường đại học CNTT ở quê hương (Cluj-Napoca, Romania). Giới thiệu thế đủ rồi :D Về cơ bản, tôi có một công ty cung cấp ứng dụng kế toán
Tôi không thể public JSONObject parseXML(String xml) { JSONObject jsonObject = XML.toJSONObject(xml); r
Tôi đã triển khai một ngôn ngữ thông dịch đơn giản với kiểu gõ động trong Java. Thật không may tôi gặp phải vấn đề sau. Đoạn mã sau được sử dụng trong quá trình thử nghiệm: def main() { def ks = Map[[1, 2]].keySet()
Luôn nhắc nhập một số từ 1 đến 10 - kết quả sẽ cộng thêm st, rd, th và nd vào số đó. Viết chương trình nhắc người dùng nhập bất kỳ số nguyên nào từ 1 đến 10, sau đó hiển thị số nguyên đó ở dạng thứ tự có thêm hậu tố. công cộng
Tôi có DownloadFile.java này và nó tải xuống tệp như mong đợi: import java.io.*; import java.net.URL public class DownloadFile {
Tôi muốn thêm độ trễ vào GUI. Tôi đặt 2 vòng lặp for rồi vẽ lại nhãn, nhưng 2 vòng lặp for này được thực thi lần lượt và nhãn được vẽ lại đến nhãn cuối cùng. Tôi có thể làm gì? for(int i=0;
Tôi đang thực hiện một số thử nghiệm với các mục danh sách của đối tượng Sinh viên, nhưng tôi thích tạo một danh sách được mã hóa cứng trong đối tượng lớp java rồi lấy dữ liệu từ đó thay vì kết nối với cơ sở dữ liệu và chọn các bản ghi trong tập kết quả. Tuy nhiên, đã lâu rồi tôi mới làm việc này,
Tôi biết rằng việc tạo đối tượng được chia thành ba phần: khai báo khởi tạo khởi tạo classA{} classB mở rộng classA{} classA obj = khởi tạo classB mới (1,1);
Tôi quan tâm đến việc xây dựng hệ thống theo dõi xe bằng GPRS. Tuy nhiên, tôi có một số câu hỏi dành cho những ai đã từng làm việc này trước đây: GPRS có phải là công nghệ tốt nhất không? Mọi người có nhận thức được vấn đề gì không? Tôi dự định sử dụng Java/Java EE - có công nghệ nào tốt hơn không? nếu như
Tôi có thể đảo ngược mảng bằng phương pháp đệ quy như: array={1,2,3,4,5} array result={5,4,3,2,1} nhưng kết quả của tôi là cùng một mảng và tôi không biết Tại sao, xin hãy giúp tôi. lớp công khai Đệ quy { p
Có một cách tiêu chuẩn để làm điều này? Bao gồm mã nguồn Java - Mã kiểm tra - Đơn vị liên kết Ant hoặc Maven Tích hợp liên tục (có thể là kiểm soát hành trình) Công cụ kiểm soát phiên bản ClearCase Triển khai đến máy chủ ứng dụng Cuối cùng, tôi muốn có một môi trường tích hợp và xây dựng tự động.
Tôi thậm chí không biết liệu điều này có khả thi hay không và tôi rất nghi ngờ điều đó là có thể, nhưng nếu có, bạn có thể cho tôi biết cách thực hiện không? Tôi chỉ muốn biết cách in một số văn bản từ máy in. Có ý tưởng gì không? Câu trả lời hay nhất Đây là một cái gì đó đơn giản hơn. nhập javax.swin
Tôi là một lập trình viên xuất sắc, rất giỏi!