Related
Here is the Fragment I am running, It used for running an if statement with dots, every time the image moves. As well as this theres an automatic timer where the images moved based on a time that I set. The app worked well until I added in the dots feature. It is still working but very slowly and cuts out of maybe 2/3 minutes of it running. Is there parts of this code I can change or delete or can I run the app on external memory? mayeb this would speed it up a bit. Ive tried to set the drawables as local variables but still no change. Is there anything else I can do.
public class HomeFragment extends Fragment {
ViewPager viewPager;
ViewPagerAdapter adapter;
LinearLayout sliderDotsPanel;
private int dotsCount;
private ImageView[] dots;
Drawable active_dots;
Drawable nonactive_dots;
public HomeFragment() {
// Required empty public constructor
}
#Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_home, container, false);
viewPager = (ViewPager) view.findViewById(R.id.view_pager);
sliderDotsPanel = (LinearLayout) view.findViewById(R.id.SliderDots);
active_dots = getDrawable(getActivity().getApplicationContext(), R.drawable.active_dot);
nonactive_dots = getDrawable(getActivity().getApplicationContext(), R.drawable.nonactive_dot);
adapter = new ViewPagerAdapter(this.getActivity());
viewPager.setAdapter(adapter);
dotsCount = adapter.getCount();
dots = new ImageView[dotsCount];
for (int i = 0; i < dotsCount; i++) {
dots[i] = new ImageView(getActivity());
dots[i].setImageDrawable(nonactive_dots);
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
params.setMargins(8, 0, 8, 0);
sliderDotsPanel.addView(dots[i], params);
}
dots[0].setImageDrawable(active_dots);
viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
#Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
#Override
public void onPageSelected(int position) {
for (int i = 0; i < dotsCount; i++) {
dots[i].setImageDrawable(nonactive_dots);
}
dots[position].setImageDrawable(active_dots);
}
#Override
public void onPageScrollStateChanged(int state) {
}
});
Timer timer = new Timer();
timer.scheduleAtFixedRate(new myTimerTask(), 4000, 2000);
return view;
}
public class myTimerTask extends TimerTask {
#Override
public void run() {
getActivity().runOnUiThread(new Runnable() {
#Override
public void run() {
while (true) {
if (viewPager.getCurrentItem() == 0) {
viewPager.setCurrentItem(1);
} else if (viewPager.getCurrentItem() == 1) {
viewPager.setCurrentItem(2);
} else if (viewPager.getCurrentItem() == 2) {
viewPager.setCurrentItem(1);
} else if (viewPager.getCurrentItem() == 1) {
viewPager.setCurrentItem(0);
}
}
}
});
}
}
}
LogCat Below
07-26 14:19:44.486 2873-2873/com.example.aids.a09application W/art: Before Android 4.1, method int android.support.v7.widget.ListViewCompat.lookForSelectablePosition(int, boolean) would have incorrectly overridden the package-private method in android.widget.ListView
07-26 14:19:44.565 2873-2873/com.example.aids.a09application I/Choreographer: Skipped 117 frames! The application may be doing too much work on its main thread.
07-26 14:19:46.622 2873-2884/com.example.aids.a09application I/art: Background sticky concurrent mark sweep GC freed 787(89KB) AllocSpace objects, 0(0B) LOS objects, 0% free, 198MB/198MB, paused 18.992ms total 102.229ms
07-26 14:19:46.952 2873-2884/com.example.aids.a09application I/art: Background partial concurrent mark sweep GC freed 997(40KB) AllocSpace objects, 0(0B) LOS objects, 1% free, 198MB/202MB, paused 15.431ms total 173.177ms
07-26 14:19:47.181 2873-2878/com.example.aids.a09application I/art: Do partial code cache collection, code=30KB, data=27KB
07-26 14:19:47.194 2873-2878/com.example.aids.a09application I/art: After code cache collection, code=21KB, data=23KB
07-26 14:19:47.194 2873-2878/com.example.aids.a09application I/art: Increasing code cache capacity to 128KB
07-26 14:19:49.800 2873-2884/com.example.aids.a09application I/art: Background partial concurrent mark sweep GC freed 37941(1634KB) AllocSpace objects, 0(0B) LOS objects, 1% free, 201MB/205MB, paused 12.622ms total 296.630ms
07-26 14:19:52.394 2873-2884/com.example.aids.a09application I/art: Background sticky concurrent mark sweep GC freed 36700(1551KB) AllocSpace objects, 0(0B) LOS objects, 0% free, 203MB/205MB, paused 13.130ms total 169.524ms
07-26 14:19:52.639 2873-2884/com.example.aids.a09application I/art: Background partial concurrent mark sweep GC freed 54270(3MB) AllocSpace objects, 0(0B) LOS objects, 1% free, 200MB/204MB, paused 18.500ms total 234.230ms
07-26 14:19:54.910 2873-2884/com.example.aids.a09application I/art: Background partial concurrent mark sweep GC freed 66332(3MB) AllocSpace objects, 0(0B) LOS objects, 1% free, 201MB/205MB, paused 14.535ms total 197.841ms
07-26 14:19:57.531 2873-2884/com.example.aids.a09application I/art: Background partial concurrent mark sweep GC freed 75191(4MB) AllocSpace objects, 0(0B) LOS objects, 1% free, 201MB/205MB, paused 14.242ms total 205.903ms
07-26 14:19:59.749 2873-2884/com.example.aids.a09application I/art: Background sticky concurrent mark sweep GC freed 35759(1500KB) AllocSpace objects, 0(0B) LOS objects, 0% free, 203MB/205MB, paused 12.808ms total 147.647ms
07-26 14:20:00.920 2873-2884/com.example.aids.a09application I/art: Background sticky concurrent mark sweep GC freed 12875(540KB) AllocSpace objects, 0(0B) LOS objects, 0% free, 204MB/205MB, paused 13.586ms total 113.208ms
07-26 14:20:01.340 2873-2884/com.example.aids.a09application I/art: Background partial concurrent mark sweep GC freed 95614(6MB) AllocSpace objects, 0(0B) LOS objects, 1% free, 198MB/202MB, paused 16.117ms total 152.367ms
07-26 14:20:01.403 2873-2879/com.example.aids.a09application I/art: Thread[3,tid=2879,WaitingInMainSignalCatcherLoop,Thread*=0x9de8de00,peer=0x12c2a8b0,"Signal Catcher"]: reacting to signal 3
07-26 14:20:01.882 2873-2879/com.example.aids.a09application I/art: Wrote stack traces to '/data/anr/traces.txt'
07-26 14:20:05.687 2873-2884/com.example.aids.a09application I/art: Background partial concurrent mark sweep GC freed 45945(2MB) AllocSpace objects, 0(0B) LOS objects, 1% free, 201MB/205MB, paused 47.723ms total 976.583ms
07-26 14:20:09.410 2873-2884/com.example.aids.a09application I/art: Background sticky concurrent mark sweep GC freed 33212(1393KB) AllocSpace objects, 0(0B) LOS objects, 0% free, 203MB/205MB, paused 18.694ms total 163.982ms
07-26 14:20:10.980 2873-2884/com.example.aids.a09application I/art: Background partial concurrent mark sweep GC freed 93472(5MB) AllocSpace objects, 0(0B) LOS objects, 1% free, 199MB/203MB, paused 17.361ms total 219.162ms
07-26 14:20:13.670 2873-2880/com.example.aids.a09application W/art: Suspending all threads took: 10.526ms
07-26 14:20:13.771 2873-2884/com.example.aids.a09application I/art: Background partial concurrent mark sweep GC freed 52852(2MB) AllocSpace objects, 0(0B) LOS objects, 1% free, 201MB/205MB, paused 15.208ms total 196.607ms
07-26 14:20:17.211 2873-2880/com.example.aids.a09application W/art: Suspending all threads took: 44.452ms
07-26 14:20:17.421 2873-2884/com.example.aids.a09application I/art: Background sticky concurrent mark sweep GC freed 35062(1470KB) AllocSpace objects, 0(0B) LOS objects, 0% free, 203MB/205MB, paused 15.334ms total 273.230ms
07-26 14:20:19.082 2873-2884/com.example.aids.a09application I/art: Background partial concurrent mark sweep GC freed 89559(5MB) AllocSpace objects, 0(0B) LOS objects, 1% free, 199MB/203MB, paused 21.820ms total 251.707ms
Delete the while (true) { just before the loop. works fine now
How many activities can I put in my project how many pictures? I make one project and have now 13 activities also and when I have between 5 and 8 activities, my project works wonderfully. Nothing stacks, nothing crashes and now I have 13 activities and when I build my project and open it, the welcome screen works and I can open one, two or three other activities but on 4 or 5 activities open and my app stops working and crashes. I think it is out of memory, but I don't understand why it happens because I have all of my bitmaps resized and compressed and when I start a new activity after startActivity() I put finish().
Here is one java code from nocnizivotActivity.java
package teslicinfo.teslic;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout;
public class nocnizivotActivity extends AppCompatActivity {
#Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_nocnizivot);
//tnt
LinearLayout lyt_tnt =(LinearLayout)findViewById(R.id.lyt_tnt);
lyt_tnt.setOnClickListener(new View.OnClickListener() {
#Override
public void onClick(View v) {
Intent i = new Intent(getApplicationContext(), diskotekeActivity.class);
i.putExtra("data", "tnt");
startActivity(i);
finish();
}
});
//moja kafanica
LinearLayout lyt_mojakafanica =(LinearLayout)findViewById(R.id.lyt_mojakafanica);
lyt_mojakafanica.setOnClickListener(new View.OnClickListener() {
#Override
public void onClick(View v) {
Intent i = new Intent(getApplicationContext(), diskotekeActivity.class);
i.putExtra("data", "mojakafanica");
startActivity(i);
finish();
}
});
//kaktus
LinearLayout lyt_kaktus =(LinearLayout)findViewById(R.id.lyt_kaktus);
lyt_kaktus.setOnClickListener(new View.OnClickListener() {
#Override
public void onClick(View v) {
Intent i = new Intent(getApplicationContext(), diskotekeActivity.class);
i.putExtra("data", "kaktus");
startActivity(i);
finish();
}
});
//caffex
LinearLayout lyt_caffex =(LinearLayout)findViewById(R.id.lyt_caffex);
lyt_caffex.setOnClickListener(new View.OnClickListener() {
#Override
public void onClick(View v) {
Intent i = new Intent(getApplicationContext(), diskotekeActivity.class);
i.putExtra("data", "caffex");
startActivity(i);
finish();
}
});
//faraon
LinearLayout lyt_faraon =(LinearLayout)findViewById(R.id.lyt_faraon);
lyt_faraon.setOnClickListener(new View.OnClickListener() {
#Override
public void onClick(View v) {
Intent i = new Intent(getApplicationContext(), diskotekeActivity.class);
i.putExtra("data", "faraon");
startActivity(i);
finish();
}
});
//lane
LinearLayout lyt_trg =(LinearLayout)findViewById(R.id.lyt_trg);
lyt_trg.setOnClickListener(new View.OnClickListener() {
#Override
public void onClick(View v) {
Intent i = new Intent(getApplicationContext(), diskotekeActivity.class);
i.putExtra("data", "trg");
startActivity(i);
finish();
}
});
//lane
LinearLayout lyt_lane =(LinearLayout)findViewById(R.id.lyt_lane);
lyt_lane.setOnClickListener(new View.OnClickListener() {
#Override
public void onClick(View v) {
Intent i = new Intent(getApplicationContext(), diskotekeActivity.class);
i.putExtra("data", "lane");
startActivity(i);
finish();
}
});
//kastel
LinearLayout lyt_kastel =(LinearLayout)findViewById(R.id.lyt_kastel);
lyt_kastel.setOnClickListener(new View.OnClickListener() {
#Override
public void onClick(View v) {
Intent i = new Intent(getApplicationContext(), diskotekeActivity.class);
i.putExtra("data", "kastel");
startActivity(i);
finish();
}
});
//cepelin
LinearLayout lyt_cepelin =(LinearLayout)findViewById(R.id.lyt_cepelin);
lyt_cepelin.setOnClickListener(new View.OnClickListener() {
#Override
public void onClick(View v) {
Intent i = new Intent(getApplicationContext(), diskotekeActivity.class);
i.putExtra("data", "cepelin");
startActivity(i);
finish();
}
});
LinearLayout lyt_dzungla =(LinearLayout)findViewById(R.id.lyt_dzungla);
lyt_dzungla.setOnClickListener(new View.OnClickListener() {
#Override
public void onClick(View v) {
Intent i = new Intent(getApplicationContext(), diskotekeActivity.class);
i.putExtra("data","dzungla");
startActivity(i);
finish();
}
});
ImageView imgnazad_nocnizivot =(ImageView)findViewById(R.id.imgnazad_nocnizivot);
imgnazad_nocnizivot.setOnClickListener(new View.OnClickListener() {
#Override
public void onClick(View v) {
Intent i = new Intent(getApplicationContext(), pocetakActivity.class);
startActivity(i);
finish();
}
});
}
#Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_nocnizivot, menu);
return true;
}
#Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
and here is the nocnizivot_layout.xml code
And this is my logcat:
11-10 10:49:40.169 2704-2704/? I/art﹕ Not late-enabling -Xcheck:jni (already on)
11-10 10:49:40.169 2704-2704/? I/art﹕ Late-enabling JIT
11-10 10:49:40.169 2704-2704/? I/art﹕ JIT created with code_cache_capacity=2MB compile_threshold=1000
11-10 10:49:40.219 2704-2704/teslicinfo.teslic W/System﹕ ClassLoader referenced unknown path: /data/app/teslicinfo.teslic-2/lib/x86
11-10 10:49:40.547 2704-2717/teslicinfo.teslic I/art﹕ Background partial concurrent mark sweep GC freed 81(3KB) AllocSpace objects, 0(0B) LOS objects, 38% free, 6MB/10MB, paused 1.464ms total 120.600ms
11-10 10:49:40.677 2704-2713/teslicinfo.teslic W/art﹕ Suspending all threads took: 16.632ms
11-10 10:49:40.742 2704-2717/teslicinfo.teslic I/art﹕ Background sticky concurrent mark sweep GC freed 21(864B) AllocSpace objects, 0(0B) LOS objects, 0% free, 21MB/21MB, paused 1.278ms total 117.549ms
11-10 10:49:40.926 2704-2724/teslicinfo.teslic D/OpenGLRenderer﹕ Use EGL_SWAP_BEHAVIOR_PRESERVED: true
11-10 10:49:40.972 2704-2704/teslicinfo.teslic D/﹕ HostConnection::get() New Host Connection established 0xab9908d0, tid 2704
11-10 10:49:41.045 2704-2724/teslicinfo.teslic D/﹕ HostConnection::get() New Host Connection established 0xab990dd0, tid 2724
11-10 10:49:41.066 2704-2724/teslicinfo.teslic I/OpenGLRenderer﹕ Initialized EGL, version 1.4
11-10 10:49:41.151 2704-2724/teslicinfo.teslic W/EGL_emulation﹕ eglSurfaceAttrib not implemented
11-10 10:49:41.151 2704-2724/teslicinfo.teslic W/OpenGLRenderer﹕ Failed to set EGL_SWAP_BEHAVIOR on surface 0xad92c960, error=EGL_SUCCESS
11-10 10:49:44.407 2704-2724/teslicinfo.teslic W/EGL_emulation﹕ eglSurfaceAttrib not implemented
11-10 10:49:44.407 2704-2724/teslicinfo.teslic W/OpenGLRenderer﹕ Failed to set EGL_SWAP_BEHAVIOR on surface 0xac13e200, error=EGL_SUCCESS
11-10 10:49:44.893 2704-2724/teslicinfo.teslic E/Surface﹕ getSlotFromBufferLocked: unknown buffer: 0xab9ac980
11-10 10:49:46.143 2704-2717/teslicinfo.teslic W/art﹕ Suspending all threads took: 13.446ms
11-10 10:49:46.147 2704-2704/teslicinfo.teslic I/art﹕ Starting a blocking GC Alloc
11-10 10:49:46.147 2704-2704/teslicinfo.teslic I/art﹕ Starting a blocking GC Alloc
11-10 10:49:46.149 2704-2704/teslicinfo.teslic I/art﹕ Starting a blocking GC Alloc
11-10 10:49:46.149 2704-2704/teslicinfo.teslic I/art﹕ Clamp target GC heap from 34MB to 32MB
11-10 10:49:46.149 2704-2704/teslicinfo.teslic I/art﹕ Starting a blocking GC Alloc
11-10 10:49:46.178 2704-2704/teslicinfo.teslic I/art﹕ Clamp target GC heap from 34MB to 32MB
11-10 10:49:46.178 2704-2704/teslicinfo.teslic I/art﹕ Alloc concurrent mark sweep GC freed 267(24KB) AllocSpace objects, 0(0B) LOS objects, 3% free, 30MB/32MB, paused 1.195ms total 27.810ms
11-10 10:49:46.182 2704-2704/teslicinfo.teslic I/art﹕ Forcing collection of SoftReferences for 1447KB allocation
11-10 10:49:46.182 2704-2704/teslicinfo.teslic I/art﹕ Starting a blocking GC Alloc
11-10 10:49:46.195 2704-2704/teslicinfo.teslic I/art﹕ Clamp target GC heap from 34MB to 32MB
11-10 10:49:46.195 2704-2704/teslicinfo.teslic I/art﹕ Alloc concurrent mark sweep GC freed 11(344B) AllocSpace objects, 0(0B) LOS objects, 3% free, 30MB/32MB, paused 3.038ms total 12.420ms
11-10 10:49:46.198 2704-2704/teslicinfo.teslic W/art﹕ Throwing OutOfMemoryError "Failed to allocate a 1481772 byte allocation with 1096520 free bytes and 1070KB until OOM"
11-10 10:49:46.198 2704-2704/teslicinfo.teslic I/art﹕ Starting a blocking GC Alloc
11-10 10:49:46.199 2704-2704/teslicinfo.teslic I/art﹕ Starting a blocking GC Alloc
11-10 10:49:46.199 2704-2704/teslicinfo.teslic I/art﹕ Starting a blocking GC Alloc
11-10 10:49:46.199 2704-2704/teslicinfo.teslic I/art﹕ Clamp target GC heap from 34MB to 32MB
11-10 10:49:46.199 2704-2704/teslicinfo.teslic I/art﹕ Starting a blocking GC Alloc
11-10 10:49:46.211 2704-2704/teslicinfo.teslic I/art﹕ Clamp target GC heap from 34MB to 32MB
11-10 10:49:46.211 2704-2704/teslicinfo.teslic I/art﹕ Alloc concurrent mark sweep GC freed 3(96B) AllocSpace objects, 0(0B) LOS objects, 3% free, 30MB/32MB, paused 0 total 10.985ms
11-10 10:49:46.214 2704-2704/teslicinfo.teslic I/art﹕ Forcing collection of SoftReferences for 1447KB allocation
11-10 10:49:46.214 2704-2704/teslicinfo.teslic I/art﹕ Starting a blocking GC Alloc
11-10 10:49:46.227 2704-2704/teslicinfo.teslic I/art﹕ Clamp target GC heap from 34MB to 32MB
11-10 10:49:46.227 2704-2704/teslicinfo.teslic I/art﹕ Alloc concurrent mark sweep GC freed 3(96B) AllocSpace objects, 0(0B) LOS objects, 3% free, 30MB/32MB, paused 1.276ms total 12.712ms
11-10 10:49:46.229 2704-2704/teslicinfo.teslic W/art﹕ Throwing OutOfMemoryError "Failed to allocate a 1481772 byte allocation with 1096520 free bytes and 1070KB until OOM"
11-10 10:49:46.231 2704-2704/teslicinfo.teslic D/skia﹕ --- allocation failed for scaled bitmap
11-10 10:49:46.233 2704-2704/teslicinfo.teslic D/AndroidRuntime﹕ Shutting down VM
11-10 10:49:46.233 2704-2704/teslicinfo.teslic E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: teslicinfo.teslic, PID: 2704
java.lang.OutOfMemoryError: Failed to allocate a 1481772 byte allocation with 1096520 free bytes and 1070KB until OOM
at dalvik.system.VMRuntime.newNonMovableArray(Native Method)
at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method)
at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:609)
at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:444)
at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:1080)
at android.content.res.Resources.loadDrawableForCookie(Resources.java:2635)
at android.content.res.Resources.loadDrawable(Resources.java:2540)
at android.content.res.Resources.getDrawable(Resources.java:806)
at android.content.Context.getDrawable(Context.java:458)
at android.widget.ImageView.resolveUri(ImageView.java:811)
at android.widget.ImageView.setImageResource(ImageView.java:418)
at teslicinfo.teslic.diskotekeActivity.diskoteke_dzungla(diskotekeActivity.java:21)
at teslicinfo.teslic.diskotekeActivity.onCreate(diskotekeActivity.java:437)
at android.app.Activity.performCreate(Activity.java:6237)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
at android.app.ActivityThread.-wrap11(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
11-10 10:49:47.991 2704-2704/? I/Process﹕ Sending signal. PID: 2704 SIG: 9
AFAIK 13 activies are supported so i guess the problem is somewhere else..maybe you did not give enough ram to your AVD.
Anyway i feel to adivice you to use fragment.
Try this may help you add this tag in your manifest file.
<application
...
...
android:largeHeap="true"
......
......
</application>
it will allocate large heap for your app
Or try this
May cause this. For creating Bitmaps memory-efficient you should use BitmapOptions
Bitmap bm;
bm = Bitmap.createScaledBitmap(BitmapFactory.decodeFile(filepath),100, 100, true);
mPicture = new ImageView(context);
mPicture.setImageBitmap(bm);
check this Strange out of memory issue while loading an image to a Bitmap object
i am developing a project where i compare two item images,So if two items will have same image after clicking these items it should be permanently delete from the GridView. my code is given below and this code encounter a problem. please any one help me.
MainActivity.java
public class MainActivity extends Activity {
Context ctx;
int imagesArray[];
GridViewContent adapter;
List<Integer> pictures, pictureList;
boolean flage = false;
int save1, save2;
int img1 = -1, img2 = -1;
public int OriginalArray[] = { R.drawable.sample_0, R.drawable.sample_1,
R.drawable.sample_2, R.drawable.sample_3, R.drawable.sample_0,
R.drawable.sample_1, R.drawable.sample_2, R.drawable.sample_3 };
#Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
shuffleArray();
final GridView grid = (GridView) findViewById(R.id.gv_memory);
grid.setAdapter(new GridViewContent(this));
}
private void shuffleArray() {
// TODO Auto-generated method stub
pictures = new ArrayList<Integer>();
for (int index = 0; index < OriginalArray.length; index++) {
pictures.add(OriginalArray[index]);
}
Collections.shuffle(pictures);
}
public class GridViewContent extends BaseAdapter {
private Context context;
private List<Integer> pictureList = new ArrayList<Integer>();
public GridViewContent(Context c) {
context = c;
for (int i = 0; i < 8; i++) {
pictureList.add(R.drawable.question);
}
}
#Override
public int getCount() {
// TODO Auto-generated method stub
return (pictureList.size());
}
#Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return pictureList.get(position);
}
#Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
#Override
public View getView(final int position, final View arg1,
final ViewGroup arg2) {
// TODO Auto-generated method stub
final ImageView myimage = new ImageView(context);
myimage.setImageResource(pictureList.get(position));
// myimage.setImageResource(pictures.get(pictureArray[position]));
myimage.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
myimage.setLayoutParams(new GridView.LayoutParams(70, 70));
final GridView grid = (GridView) findViewById(R.id.gv_memory);
myimage.setOnClickListener(new OnClickListener() {
#Override
public void onClick(View v) {
myimage.setImageResource(pictures.get(position));
// View v1 = new View(context);
if (flage == false) {
img1 = pictures.get(position);
// v1 = arg2.getChildAt(position);
save1 = position;
flage = true;
} else if (flage == true) {
img2 = pictures.get(position);
save2 = position;
checkResult(save1, save2);
flage = false;
}
// else if(f)
}
});
return myimage;
}
}
public void checkResult(int s1, int s2) {
if (img1 == img2) {
pictureList.remove(s1); //this is line no 116
pictureList.remove(s1);
adapter.notifyDataSetChanged();
Toast.makeText(MainActivity.this, "Congratualatin !!!!",
Toast.LENGTH_LONG).show();
} else {
Toast.makeText(MainActivity.this, "Sorry!!!!", Toast.LENGTH_LONG)
.show();
final GridView grid = (GridView) findViewById(R.id.gv_memory);
grid.setAdapter(new GridViewContent(this));
}
}
}
LogCat.
03-14 01:07:12.791: D/dalvikvm(1598): GC_FOR_ALLOC freed 38K, 7% free 2771K/2980K, paused 183ms, total 185ms
03-14 01:07:12.811: I/dalvikvm-heap(1598): Grow heap (frag case) to 3.943MB for 1127536-byte allocation
03-14 01:07:12.941: D/dalvikvm(1598): GC_FOR_ALLOC freed 2K, 6% free 3870K/4084K, paused 128ms, total 128ms
03-14 01:07:13.111: D/dalvikvm(1598): GC_FOR_ALLOC freed 4K, 5% free 4253K/4448K, paused 25ms, total 26ms
03-14 01:07:13.143: I/dalvikvm-heap(1598): Grow heap (frag case) to 5.688MB for 1440016-byte allocation
03-14 01:07:13.271: D/dalvikvm(1598): GC_FOR_ALLOC freed <1K, 4% free 5659K/5856K, paused 127ms, total 127ms
03-14 01:07:13.481: I/Choreographer(1598): Skipped 49 frames! The application may be doing too much work on its main thread.
03-14 01:07:13.571: D/gralloc_goldfish(1598): Emulator without GPU emulation detected.
03-14 01:08:36.011: D/dalvikvm(1598): GC_FOR_ALLOC freed 357K, 9% free 5587K/6116K, paused 34ms, total 35ms
03-14 01:08:36.021: I/dalvikvm-heap(1598): Grow heap (frag case) to 6.543MB for 971296-byte allocation
03-14 01:08:36.154: D/dalvikvm(1598): GC_FOR_ALLOC freed 1K, 8% free 6534K/7068K, paused 123ms, total 123ms
03-14 01:08:39.422: D/dalvikvm(1598): GC_FOR_ALLOC freed 2385K, 8% free 5419K/5876K, paused 76ms, total 78ms
03-14 01:08:39.492: D/dalvikvm(1598): GC_FOR_ALLOC freed 1K, 4% free 5654K/5876K, paused 40ms, total 41ms
03-14 01:08:41.352: D/AndroidRuntime(1598): Shutting down VM
03-14 01:08:41.352: W/dalvikvm(1598): threadid=1: thread exiting with uncaught exception (group=0x41465700)
03-14 01:08:41.532: E/AndroidRuntime(1598): FATAL EXCEPTION: main
03-14 01:08:41.532: E/AndroidRuntime(1598): java.lang.NullPointerException
03-14 01:08:41.532: E/AndroidRuntime(1598): at com.example.memoryforkids.MainActivity.checkResult(MainActivity.java:116)
03-14 01:08:41.532: E/AndroidRuntime(1598): at com.example.memoryforkids.MainActivity$GridViewContent$1.onClick(MainActivity.java:102)
03-14 01:08:41.532: E/AndroidRuntime(1598): at android.view.View.performClick(View.java:4240)
03-14 01:08:41.532: E/AndroidRuntime(1598): at android.view.View$PerformClick.run(View.java:17721)
03-14 01:08:41.532: E/AndroidRuntime(1598): at android.os.Handler.handleCallback(Handler.java:730)
03-14 01:08:41.532: E/AndroidRuntime(1598): at android.os.Handler.dispatchMessage(Handler.java:92)
03-14 01:08:41.532: E/AndroidRuntime(1598): at android.os.Looper.loop(Looper.java:137)
03-14 01:08:41.532: E/AndroidRuntime(1598): at android.app.ActivityThread.main(ActivityThread.java:5103)
03-14 01:08:41.532: E/AndroidRuntime(1598): at java.lang.reflect.Method.invokeNative(Native Method)
03-14 01:08:41.532: E/AndroidRuntime(1598): at java.lang.reflect.Method.invoke(Method.java:525)
03-14 01:08:41.532: E/AndroidRuntime(1598): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
03-14 01:08:41.532: E/AndroidRuntime(1598): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
03-14 01:08:41.532: E/AndroidRuntime(1598): at dalvik.system.NativeStart.main(Native Method)
main.xml
<?xml version="1.0" encoding="utf-8"?>
<GridView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="#+id/gv_memory"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:columnWidth="90dp"
android:gravity="center"
android:horizontalSpacing="10dp"
android:numColumns="auto_fit"
android:stretchMode="columnWidth"
android:verticalSpacing="10dp" >
</GridView>
Thanks in advance..
Ok so, I found the bug, you have defined the pictureList variable in two places, the one being initialized inside the adapter class is a local variable. When checkResult is called, it uses the pictureList variable belonging to the main activity class. Do the following:
1) Remove the local variable inside the adapter class.
2) Initialize the pictureList variable that has been defined in the activity class.
This fixes the error. Its working fine on my machine now!
Also, there are a lot of issues with the logic you are using, you will realize that once you fix this error.
I've started to do a speedtest application recently.
The method is simple :
I instanciate multiple threads all downloading the same uncompressible file, then i calculate the average download speed.
But I've got some performances problems I think. When i start the test with more than one thread, i see a lot of GC_CONCURRENT freed and WAIT_FOR_CONCURRENT_GC in the logCat.
I don't understand where's that comming from.
Habitually these problems seems to appear in certain circumpstances, like instanciating too much objects, or huge objects, but i don't think it's the case here...
Here is my code (simplified - without speed calculation):
public class SpeedTest extends Activity{
private final int NB_THREADS = 2;
private long bytesIn;
private long downloadTime;
private List<Downloader> downloaders = new ArrayList<Downloader>();
#Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.speed_test);
bytesIn = 0;
for (int i = 0; i < NB_THREADS; i++){
downloaders.add(new Downloader());
downloaders.get(i).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, i);
}
}
private synchronized void addBytes(){ bytesIn++; }
private class Downloader extends AsyncTask<Integer, Void, Void>{
#Override
protected Void doInBackground(Integer... params){
Log.d("eduine", "Downloader " + params[0] + " started");
try{
InputStream stream = new URL("http://test-de-vitesse.ariase.com/ariasetool/1mb_random.bin").openConnection().getInputStream();
while((stream.skip(1)) != 0){
addBytes();
}
stream.close();
}catch (MalformedURLException e){
e.printStackTrace();
Log.e("eduine", "malformed url : " + e.getMessage());
}catch (IOException e){
e.printStackTrace();
Log.e("eduine", "io error : " + e.getMessage());
}
Log.d("eduine", "Downloader " + params[0] + " terminated");
return null;
}
}
}
So I'd like to know if someone already experienced this problem, or have any idea why is there these performances problems, because it distorts the speed calculations.
Thanks in advance!
EDIT : forgot to post the logCat, sorry.
02-12 14:18:40.945: D/eduine(15637): Downloader 0 started
02-12 14:18:40.955: D/eduine(15637): Downloader 1 started
02-12 14:18:41.355: D/dalvikvm(15637): GC_CONCURRENT freed 3102K, 33% free 7552K/11240K, paused 3ms+3ms, total 20ms
02-12 14:18:41.395: D/dalvikvm(15637): GC_CONCURRENT freed 1564K, 33% free 7533K/11240K, paused 3ms+3ms, total 18ms
02-12 14:18:41.465: D/dalvikvm(15637): GC_CONCURRENT freed 1657K, 33% free 7537K/11240K, paused 2ms+7ms, total 20ms
02-12 14:18:41.465: D/dalvikvm(15637): WAIT_FOR_CONCURRENT_GC blocked 8ms
02-12 14:18:41.485: D/dalvikvm(15637): GC_CONCURRENT freed 1657K, 33% free 7541K/11240K, paused 2ms+3ms, total 17ms
02-12 14:18:41.485: D/dalvikvm(15637): WAIT_FOR_CONCURRENT_GC blocked 10ms
02-12 14:18:41.505: D/dalvikvm(15637): GC_CONCURRENT freed 1669K, 33% free 7533K/11240K, paused 3ms+1ms, total 17ms
02-12 14:18:41.505: D/dalvikvm(15637): WAIT_FOR_CONCURRENT_GC blocked 10ms
02-12 14:18:41.525: D/dalvikvm(15637): GC_CONCURRENT freed 1609K, 33% free 7537K/11240K, paused 3ms+3ms, total 16ms
02-12 14:18:41.545: D/dalvikvm(15637): GC_CONCURRENT freed 1669K, 34% free 7529K/11240K, paused 3ms+2ms, total 16ms
02-12 14:18:41.545: D/dalvikvm(15637): WAIT_FOR_CONCURRENT_GC blocked 13ms
etc etc... until
02-12 14:21:14.795: D/dalvikvm(16164): GC_CONCURRENT freed 1537K, 33% free 7533K/11240K, paused 3ms+2ms, total 16ms
02-12 14:21:14.815: D/dalvikvm(16164): GC_CONCURRENT freed 1537K, 33% free 7533K/11240K, paused 2ms+2ms, total 15ms
02-12 14:21:14.835: D/dalvikvm(16164): GC_CONCURRENT freed 1537K, 33% free 7533K/11240K, paused 2ms+3ms, total 16ms
02-12 14:21:14.845: D/eduine(16164): Downloader 0 terminated at 1392211274859
02-12 14:21:14.855: D/dalvikvm(16164): GC_CONCURRENT freed 1545K, 34% free 7529K/11240K, paused 3ms+3ms, total 17ms
02-12 14:21:14.915: D/eduine(16164): Downloader 1 terminated at 1392211274925
EDIT : same problem using ThreadPool, code below.
public class SpeedTest extends Activity{
private final int NB_OF_THREADS = 8;
private long bytesIn;
private long start;
ExecutorService executorService = new ThreadPoolExecutor(NB_OF_THREADS, NB_OF_THREADS, 1, TimeUnit.MINUTES, new ArrayBlockingQueue<Runnable>(NB_OF_THREADS, true), new ThreadPoolExecutor.CallerRunsPolicy());
#Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.speed_test);
bytesIn = 0;
start = System.currentTimeMillis();
for (int i = 0; i < NB_OF_THREADS; i++) executorService.submit(new Downloader(i));
}
private synchronized void addByte(){ bytesIn++; }
private class Downloader implements Runnable{
private int id;
private InputStream stream;
private long downloadTime;
public Downloader(int _id){ id = _id; }
#Override
public void run(){
Log.d("eduine", "Downloader " + id + " started at " + System.currentTimeMillis());
try{
HttpURLConnection connexion = (HttpURLConnection) new URL("http://test-de-vitesse.ariase.com/ariasetool/1mb_random.bin").openConnection();
connexion.setUseCaches(false);
stream = connexion.getInputStream();
while((stream.skip(1)) != 0) addByte();
stream.close();
downloadTime = (System.currentTimeMillis() - start);
downloadTime = downloadTime == 0 ? 1 : downloadTime;
}catch (MalformedURLException e){
e.printStackTrace();
Log.e("eduine", "malformed url : " + e.getMessage());
}catch (IOException e){
e.printStackTrace();
Log.e("eduine", "io error : " + e.getMessage());
}
Log.d("eduine", "Downloader " + id + " terminated at " + System.currentTimeMillis());
}
}
}
Thread objects themselves consume much memory for their stacks. To clean your test from instantiate/free threads, do not use AsyncTask (which creates Thread), but create a fixed threadpool beforehand, start test, wait it to end, and only then shutdown the thread pool.
everytime I run this code I get a force close, which i don't understand. Im new to Android development, can anybody help? I'm really thankful for any tips from you guys. So far i just understood, that the memory space is running out, but how can I prevent the memory from running low?
My code:
Boolean start = true;
HttpPost httppost;
StringBuffer buffer;
HttpResponse response;
HttpClient httpclient;
List<NameValuePair> nameValuePair;
TextView txtEntries;
#Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main_screen);
txtEntries = (TextView)findViewById(R.id.txtEntries);
SharedPreferences p = PreferenceManager.getDefaultSharedPreferences(getBaseContext());
String User = p.getString("User", "");
String Password = p.getString("Password", "");
txtEntries.setText("user:" + User + "Passwort:" + Password);
getEntries.start();
start = true;
}
#Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_main_screen, menu);
return true;
}
Thread getEntries = new Thread() {
public void run() {
//while(!login_thread.isInterrupted()) {
while (getEntries.isInterrupted() == false) {
try {
sleep(2000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if (start) {
//Code for login+Action from saved text
SharedPreferences p = PreferenceManager.getDefaultSharedPreferences(getBaseContext());
String User = p.getString("User", "");
String Password = p.getString("Password", "");
login("Entries", User, Password);
}
}
//while (start == true){
//login(box_User.getText().toString(), box_Password.getText().toString());
//}
//}
}
};
//implement Handler
Handler handler = new Handler() {
#Override
public void handleMessage(Message msg) {
getEntries.interrupt();
txtEntries = (TextView)findViewById(R.id.txtEntries);
txtEntries.setText("Handler");
Bundle bundle = msg.getData();
Boolean Connection = bundle.getBoolean("Connection");
String response = bundle.getString("Entries");
if (Connection) {
// Toast.makeText(getBaseContext(), "Connection", 5000).show();
if (response != "") {
//Code which shows all entries
Toast.makeText(getBaseContext(), "Response", 5000).show();
txtEntries.setText(response);
} else {
txtEntries.setText("Empty");
}
}else {
txtEntries.setText("No connection");
getEntries.interrupt();
}
}
};
// getData method
private void login(String Action, String User, String Password) {
// TODO Auto-generated method stub
start = false;
Message msg = handler.obtainMessage();
Bundle bundle = new Bundle();
httppost = new HttpPost("http://10.0.2.2/KHG/api/check-login.php");
HttpParams httpParameters = new BasicHttpParams();
// Set the timeout in milliseconds until a connection is established.
// The default value is zero, that means the timeout is not used.
int timeoutConnection = 15000;
HttpConnectionParams.setConnectionTimeout(httpParameters, timeoutConnection);
// Set the default socket timeout (SO_TIMEOUT)
// in milliseconds which is the timeout for waiting for data.
int timeoutSocket = 15000;
HttpConnectionParams.setSoTimeout(httpParameters, timeoutSocket);
httpclient = new DefaultHttpClient(httpParameters);
nameValuePair = new ArrayList<NameValuePair>(1);
nameValuePair.add(new BasicNameValuePair("User", User));
nameValuePair.add(new BasicNameValuePair("Password", Password));
nameValuePair.add(new BasicNameValuePair("Action", Action));
try {
httppost.setEntity(new UrlEncodedFormEntity(nameValuePair));
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
e.printStackTrace();
bundle.putBoolean("Connection", false);
bundle.putString("Entries", "");
msg.setData(bundle);
handler.sendMessage(msg);
}
try {
response = httpclient.execute(httppost);
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
bundle.putBoolean("Connection", false);
bundle.putString("Entries", "");
msg.setData(bundle);
handler.sendMessage(msg);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
bundle.putBoolean("Connection", false);
bundle.putString("Entries", "");
msg.setData(bundle);
handler.sendMessage(msg);
}
ResponseHandler<String> responseHandler = new BasicResponseHandler();
String response;
try {
// Toast.makeText(getBaseContext(), "test", Toast.LENGTH_LONG).show();
response = httpclient.execute(httppost, responseHandler);
SharedPreferences p = PreferenceManager.getDefaultSharedPreferences(getBaseContext());
p.edit().putString("Data", response).commit();
bundle.putBoolean("Connection", true);
bundle.putString("Entries", "ok");
msg.setData(bundle);
handler.sendMessage(msg);
}
catch (Exception e) {
e.printStackTrace();
bundle.putBoolean("Connection", false);
bundle.putString("Entries", "");
msg.setData(bundle);
handler.sendMessage(msg);
// Toast.makeText(getBaseContext(), "exception", Toast.LENGTH_LONG).show();
}
}
}
And my log:
03-23 16:32:22.683: D/dalvikvm(741): GC_FOR_ALLOC freed 135K, 4% free 8821K/9159K, paused 60ms
03-23 16:32:22.822: W/SingleClientConnManager(741): Invalid use of SingleClientConnManager: connection still allocated.
03-23 16:32:22.822: W/SingleClientConnManager(741): Make sure to release the connection before allocating another one.
03-23 16:32:23.012: W/System.err(741): java.lang.InterruptedException
03-23 16:32:23.012: W/System.err(741): at java.lang.VMThread.sleep(Native Method)
03-23 16:32:23.012: W/System.err(741): at java.lang.Thread.sleep(Thread.java:1214)
03-23 16:32:23.022: W/System.err(741): at java.lang.Thread.sleep(Thread.java:1196)
03-23 16:32:23.022: W/System.err(741): at com.shr.khg.MainActivity$2.run(MainActivity.java:109)
03-23 16:32:25.342: D/dalvikvm(741): GC_FOR_ALLOC freed 80K, 3% free 9148K/9415K, paused 60ms
03-23 16:32:25.442: W/SingleClientConnManager(741): Invalid use of SingleClientConnManager: connection still allocated.
03-23 16:32:25.442: W/SingleClientConnManager(741): Make sure to release the connection before allocating another one.
03-23 16:32:25.822: D/dalvikvm(741): GC_CONCURRENT freed 40K, 3% free 9558K/9799K, paused 21ms+9ms
03-23 16:32:25.942: D/dalvikvm(741): GC_FOR_ALLOC freed 123K, 5% free 9629K/10119K, paused 68ms
03-23 16:32:25.952: I/dalvikvm-heap(741): Grow heap (frag case) to 9.770MB for 262160-byte allocation
03-23 16:32:26.092: D/dalvikvm(741): GC_FOR_ALLOC freed 0K, 6% free 9885K/10439K, paused 69ms
03-23 16:32:26.262: D/dalvikvm(741): GC_FOR_ALLOC freed 132K, 7% free 9757K/10439K, paused 55ms
03-23 16:32:26.262: I/dalvikvm-heap(741): Grow heap (frag case) to 10.145MB for 524304-byte allocation
03-23 16:32:26.412: D/dalvikvm(741): GC_FOR_ALLOC freed 0K, 7% free 10269K/11015K, paused 57ms
03-23 16:32:26.682: D/dalvikvm(741): GC_CONCURRENT freed 262K, 10% free 10014K/11015K, paused 13ms+3ms
03-23 16:32:26.852: D/dalvikvm(741): GC_FOR_ALLOC freed 1K, 10% free 10013K/11015K, paused 71ms
03-23 16:32:26.872: I/dalvikvm-heap(741): Grow heap (frag case) to 10.895MB for 1048592-byte allocation
03-23 16:32:27.042: D/dalvikvm(741): GC_FOR_ALLOC freed 0K, 9% free 11037K/12103K, paused 63ms
03-23 16:32:27.302: D/dalvikvm(741): GC_CONCURRENT freed 518K, 14% free 10526K/12103K, paused 26ms+5ms
03-23 16:32:28.212: D/dalvikvm(741): GC_FOR_ALLOC freed 9K, 14% free 10525K/12103K, paused 102ms
03-23 16:32:28.242: I/dalvikvm-heap(741): Grow heap (frag case) to 12.395MB for 2097168-byte allocation
03-23 16:32:28.562: D/dalvikvm(741): GC_FOR_ALLOC freed 0K, 12% free 12573K/14215K, paused 89ms
03-23 16:32:28.912: D/dalvikvm(741): GC_CONCURRENT freed 1030K, 19% free 11550K/14215K, paused 18ms+23ms
03-23 16:32:31.352: D/dalvikvm(741): GC_FOR_ALLOC freed 26K, 19% free 11549K/14215K, paused 79ms
03-23 16:32:31.412: I/dalvikvm-heap(741): Grow heap (frag case) to 15.395MB for 4194320-byte allocation
03-23 16:32:31.723: D/dalvikvm(741): GC_FOR_ALLOC freed 0K, 15% free 15645K/18375K, paused 87ms
03-23 16:32:31.932: D/dalvikvm(741): GC_CONCURRENT freed 2054K, 27% free 13598K/18375K, paused 19ms+4ms
03-23 16:32:38.491: D/dalvikvm(741): GC_FOR_ALLOC freed 59K, 27% free 13597K/18375K, paused 67ms
03-23 16:32:38.621: I/dalvikvm-heap(741): Grow heap (frag case) to 21.395MB for 8388624-byte allocation
03-23 16:32:39.031: D/dalvikvm(741): GC_FOR_ALLOC freed 0K, 19% free 21789K/26631K, paused 98ms
03-23 16:32:39.341: D/dalvikvm(741): GC_CONCURRENT freed 4101K, 34% free 17694K/26631K, paused 17ms+11ms
03-23 16:32:52.093: D/dalvikvm(741): GC_FOR_ALLOC freed 124K, 34% free 17693K/26631K, paused 79ms
03-23 16:32:52.093: I/dalvikvm-heap(741): Forcing collection of SoftReferences for 16777232-byte allocation
03-23 16:32:52.242: D/dalvikvm(741): GC_BEFORE_OOM freed 8K, 34% free 17685K/26631K, paused 142ms
03-23 16:32:52.242: E/dalvikvm-heap(741): Out of memory on a 16777232-byte allocation.
03-23 16:32:52.242: I/dalvikvm(741): "Thread-12" prio=5 tid=10 RUNNABLE
03-23 16:32:52.251: I/dalvikvm(741): | group="main" sCount=0 dsCount=0 obj=0x408b9158 self=0x16f860
03-23 16:32:52.251: I/dalvikvm(741): | sysTid=752 nice=0 sched=0/0 cgrp=default handle=1669016
03-23 16:32:52.251: I/dalvikvm(741): | schedstat=( 5912317448 1115812658 845 ) utm=511 stm=80 core=0
03-23 16:32:52.251: I/dalvikvm(741): at org.apache.http.util.CharArrayBuffer.expand(CharArrayBuffer.java:~59)
03-23 16:32:52.251: I/dalvikvm(741): at org.apache.http.util.CharArrayBuffer.append(CharArrayBuffer.java:77)
03-23 16:32:52.251: I/dalvikvm(741): at org.apache.http.util.EntityUtils.toString(EntityUtils.java:136)
03-23 16:32:52.251: I/dalvikvm(741): at org.apache.http.util.EntityUtils.toString(EntityUtils.java:146)
03-23 16:32:52.251: I/dalvikvm(741): at org.apache.http.impl.client.BasicResponseHandler.handleResponse(BasicResponseHandler.java:76)
03-23 16:32:52.251: I/dalvikvm(741): at org.apache.http.impl.client.BasicResponseHandler.handleResponse(BasicResponseHandler.java:59)
03-23 16:32:52.251: I/dalvikvm(741): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:657)
03-23 16:32:52.262: I/dalvikvm(741): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:627)
03-23 16:32:52.262: I/dalvikvm(741): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:616)
03-23 16:32:52.262: I/dalvikvm(741): at com.shr.khg.MainScreen.login(MainScreen.java:170)
03-23 16:32:52.262: I/dalvikvm(741): at com.shr.khg.MainScreen.access$0(MainScreen.java:118)
03-23 16:32:52.262: I/dalvikvm(741): at com.shr.khg.MainScreen$1.run(MainScreen.java:79)
03-23 16:32:55.752: W/dalvikvm(741): threadid=10: thread exiting with uncaught exception (group=0x40014760)
03-23 16:32:55.772: E/AndroidRuntime(741): FATAL EXCEPTION: Thread-12
03-23 16:32:55.772: E/AndroidRuntime(741): java.lang.OutOfMemoryError
03-23 16:32:55.772: E/AndroidRuntime(741): at org.apache.http.util.CharArrayBuffer.expand(CharArrayBuffer.java:59)
03-23 16:32:55.772: E/AndroidRuntime(741): at org.apache.http.util.CharArrayBuffer.append(CharArrayBuffer.java:77)
03-23 16:32:55.772: E/AndroidRuntime(741): at org.apache.http.util.EntityUtils.toString(EntityUtils.java:136)
03-23 16:32:55.772: E/AndroidRuntime(741): at org.apache.http.util.EntityUtils.toString(EntityUtils.java:146)
03-23 16:32:55.772: E/AndroidRuntime(741): at org.apache.http.impl.client.BasicResponseHandler.handleResponse(BasicResponseHandler.java:76)
03-23 16:32:55.772: E/AndroidRuntime(741): at org.apache.http.impl.client.BasicResponseHandler.handleResponse(BasicResponseHandler.java:59)
03-23 16:32:55.772: E/AndroidRuntime(741): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:657)
03-23 16:32:55.772: E/AndroidRuntime(741): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:627)
03-23 16:32:55.772: E/AndroidRuntime(741): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:616)
03-23 16:32:55.772: E/AndroidRuntime(741): at com.shr.khg.MainScreen.login(MainScreen.java:170)
03-23 16:32:55.772: E/AndroidRuntime(741): at com.shr.khg.MainScreen.access$0(MainScreen.java:118)
03-23 16:32:55.772: E/AndroidRuntime(741): at com.shr.khg.MainScreen$1.run(MainScreen.java:79)
03-23 16:32:59.012: I/Process(741): Sending signal. PID: 741 SIG: 9
Thanks!
It is a very known problem.... First of all you ought to implement your http request in AsyncTask.... Then you won't see this error never Again!!!!!!!!!!!!!