Chia sẻ kinh nghiệm về tối ưu trong android


Từ: 10:32 14/06/2012
Bài: 112
Cảm ơn: 124
Thích: 18

Lập thread này mong mọi người có kinh nghiệm gì về android vào chia sẻ nào

- Kinh nghiệm đầu tiên của mình , 1 ứng dụng android chịu đc đến cái thread thứ 5 (5 thread while ) là nằm im ( mặc dù trên máy ảo chạy ầm ầm ) angel

- Bộ nhớ của làm việc của android  ( ví dụ như 1 arrayList , HashMap.....blah blah ) của toàn bộ chương trình chỉ lưu được 1 dung lượng giới hạn , khá nhỏ , 7mb gì gì đó chả nhớ nữa , nó ném ra 1 ngoại lệ tên là outofmemoryexception (Sau khi mình lưu 1 mảng gần 20 cái bitmap vào HashMap<String,Bitmap> thì xuất hiện vấn đề này o.O)

- Sử dụng đọc ghi trên thẻ SD cần chú ý thêm quyền

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

cho app 

Nếu quyền này không được cấp thì app chỉ chạy đc trên emulator , máy thật đang kết nối usb với máy tính, nếu rút dây usb này ra thì app vĩnh viễn ở chế độ debugger to attach , ko có cách nào để ứng dụng chạy đc ( mất gần 1 ngày để tìm ra nguyên nhân này o.O)

- Mạng (wifi , 3g , 2.5g ) của mobile ko đc trâu bò như máy tính , vì vậy việc làm việc với server nếu ko tính toán kĩ thì sẽ phát sinh ra vấn đề khó khăn

-Cố gắng Sử dụng Handler+ Runnable cho mọi vấn đề ( một số pải dùng đến thread thì pải chấp nhận ) , dùng cái này đỡ pải nghĩ nhiều

- Nghĩ đến việc tổ chức chương trình ngay từ khi bắt đầu viết lệnh . (Nếu sử dụng class con trong 1 class cha mà ko tính đến cái này thì viết xong nhìn lại là cả 1 ác mộng @@)

-Sử dụng 1 queue khi app có nhiều luồng , việc này khiến cho các công việc đc sắp xếp theo trật tự , bạn có thể ưu tiên thực hiện công việc nào trc , và quan trọng nhất là trong 1 thời điểm chỉ có 1 thread đc chạy 

Label
Từ: 21:54 09/09/2012
Bài: 4
Cảm ơn: 6
Thích: 2

Cái này nghe vẻ hơi vô lý nhỉ. Trong thread bạn làm gì? Trước làm J2ME tạo đến 17 18 cái thread ở trong có xử lý lằng nhằng mới thấy bắt đầu bị over buffer. Thường m để Emulator defaultf ram 256. Thấy chậm hơn máy thật rất nhiều từ xử lý đến load dữ liệu từ server.

Label
Từ: 10:32 14/06/2012
Bài: 112
Cảm ơn: 124
Thích: 18

hic viết thiếu ,ý mình là 5 thread , trong 5 thread xài white(true){//} bạn à:|

trong mỗi cái {...} lại abc xyz :|

 

Label
Từ: 16:10 29/06/2012
Bài: 6
Cảm ơn: 10
Thích: 3

Đây là các ý kiến của mình:

- Thread: Cái này mình nghĩ là do cấu hình máy thôi chứ. Nếu cấu hình máy kém thì có thể trường hợp của bạn là đúng, còn các máy chip lõi kép trở lên, ram 512Mb chạy ầm ầm bạn ah.

- Bộ nhớ: bạn có thể sử dụng thẻ nhớ để xử lý vấn đề caching được mà. Cái này do mình thiết lập.

- Ngoài Handler+ Runnable ra có thể sử dụng AsyncTask dùng cho các tiến trình ngắn.

- Ngoài ra mình nghĩ trước khi bắt tay vào code thì chúng ta nên thiết kế các layout activity của ứng dụng trước để dễ hình dung và phân tích chức năng được chính xác.

- Nếu có thể chúng ta nên code theo kiểu mô hình mvc, cũng khá là hay và dễ quản lý, mở rộng cũng như nâng cấp sửa đổi.

Mọi người có thêm ý kiến gì thì mình cùng vào trao đổi nhé :D

Label
Từ: 10:32 14/06/2012
Bài: 112
Cảm ơn: 124
Thích: 18

máy em ram hơn 700 mà bị màn hình đen thui . hồi đấy ngu qá cứ động cái là thread . xong xuôi nhìn lại có 5 cái thread while(true) nó quét liên tục anh ạ :))

cái sqlite vs cả cache của app nó có giới hạn bộ nhớ không anh ?

hay cứ vô tư kiểu sdcard ạ?