2017-02-06 2 views
-4

Следующий способ, который я использовал для открытия файла в блокноте, который я сохранил в своей исходной папке.Экран становится пустым, а приложение закрывает себя

Когда я открываю этот метод, открывается новый пустой экран (полностью черный), и сила приложения закрывается.

public class Fest1 extends AppCompatActivity { 

TextView text; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_fest1); 
    text=(TextView)findViewById(R.id.textV); 
    text.setText(readTxt()); 
} 
private String readTxt(){ 

    InputStream inputStream=getResources().openRawResource(R.raw.text); 
    ByteArrayOutputStream byteArrayOutputStream=new ByteArrayOutputStream(); 
    int i; 
    try{ 
     i=inputStream.read(); 
     while (i!=1) 
     { 
      byteArrayOutputStream.write(i); 
      i = inputStream.read(); 
     } 
     inputStream.close(); 
     }catch (IOException e) 
    { 
     e.printStackTrace(); 
    } 

    return byteArrayOutputStream.toString(); 
    } 

    } 

Журнал:

02-06 10:02:11.345 4026-4026/com.example.krishna.festival I/art: Starting a blocking GC Alloc 02-06 10:02:11.345 4026-4026/com.example.krishna.festival I/art: Starting a blocking GC Alloc 02-06 10:02:11.349 4026-4026/com.example.krishna.festival I/art: Starting a blocking GC Alloc 02-06 10:02:11.357 4026-4026/com.example.krishna.festival I/art: Alloc partial concurrent mark sweep GC freed 6(144B) AllocSpace objects, 1(64MB) LOS objects, 2% free, 132MB/136MB, paused 632us total 7.967ms 02-06 10:02:11.357 4026-4026/com.example.krishna.festival I/art: Starting a blocking GC Alloc 02-06 10:02:11.364 4026-4026/com.example.krishna.festival I/art: Alloc concurrent mark sweep GC freed 3(72B) AllocSpace objects, 0(0B) LOS objects, 2% free, 132MB/136MB, paused 601us total 6.660ms 02-06 10:02:11.364 4026-4026/com.example.krishna.festival I/art: Forcing collection of SoftReferences for 256MB allocation 02-06 10:02:11.364 4026-4026/com.example.krishna.festival I/art: Starting a blocking GC Alloc 02-06 10:02:11.371 4026-4026/com.example.krishna.festival I/art: Alloc concurrent mark sweep GC freed 3(72B) AllocSpace objects, 0(0B) LOS objects, 2% free, 132MB/136MB, paused 599us total 6.876ms 02-06 10:02:11.371 4026-4026/com.example.krishna.festival W/art: Throwing OutOfMemoryError "Failed to allocate a 268435468 byte allocation with 4194304 free bytes and 251MB until OOM" 02-06 10:02:11.371 4026-4026/com.example.krishna.festival I/art: Starting a blocking GC Alloc 02-06 10:02:11.371 4026-4026/com.example.krishna.festival I/art: Starting a blocking GC Alloc 02-06 10:02:11.376 4026-4026/com.example.krishna.festival I/art: Starting a blocking GC Alloc 02-06 10:02:11.381 4026-4026/com.example.krishna.festival I/art: Alloc partial concurrent mark sweep GC freed 6(144B) AllocSpace objects, 0(0B) LOS objects, 2% free, 132MB/136MB, paused 585us total 5.443ms 02-06 10:02:11.382 4026-4026/com.example.krishna.festival I/art: Starting a blocking GC Alloc 02-06 10:02:11.388 4026-4026/com.example.krishna.festival I/art: Alloc concurrent mark sweep GC freed 3(72B) AllocSpace objects, 0(0B) LOS objects, 2% free, 132MB/136MB, paused 599us total 6.748ms 02-06 10:02:11.389 4026-4026/com.example.krishna.festival I/art: Forcing collection of SoftReferences for 256MB allocation 02-06 10:02:11.389 4026-4026/com.example.krishna.festival I/art: Starting a blocking GC Alloc 02-06 10:02:11.396 4026-4026/com.example.krishna.festival I/art: Alloc concurrent mark sweep GC freed 3(72B) AllocSpace objects, 0(0B) LOS objects, 2% free, 132MB/136MB, paused 612us total 7.157ms 02-06 10:02:11.396 4026-4026/com.example.krishna.festival I/art: Starting a blocking GC HomogeneousSpaceCompact 02-06 10:02:11.402 4026-4026/com.example.krishna.festival I/art: HomogeneousSpaceCompact marksweep + semispace GC freed 0(0B) AllocSpace objects, 0(0B) LOS objects, 2% free, 132MB/136MB, paused 5.670ms total 5.670ms 02-06 10:02:11.402 4026-4026/com.example.krishna.festival W/art: Throwing OutOfMemoryError "Failed to allocate a 268435468 byte allocation with 4194304 free bytes and 251MB until OOM" 02-06 10:02:11.402 4026-4026/com.example.krishna.festival D/AndroidRuntime: Shutting down VM 02-06 10:02:11.402 4026-4026/com.example.krishna.festival E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.krishna.festival, PID: 4026 java.lang.OutOfMemoryError: Failed to allocate a 268435468 byte allocation with 4194304 free bytes and 251MB until OOM at java.util.Arrays.copyOf(Arrays.java:3256) at java.io.ByteArrayOutputStream.grow(ByteArrayOutputStream.java:113) at java.io.ByteArrayOutputStream.ensureCapacity(ByteArrayOutputStream.java:93) at java.io.ByteArrayOutputStream.write(ByteArrayOutputStream.java:122) at com.example.krishna.festival.Fest1.readTxt(Fest1.java:32) at com.example.krishna.festival.Fest1.onCreate(Fest1.java:21) at android.app.Activity.performCreate(Activity.java:6679) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2618) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2726) at android.app.ActivityThread.-wrap12(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1477) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java:6119) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)

+1

Пожалуйста, поделитесь соответствующим журналом, чтобы мы могли увидеть исключение и трассировку стека – yakobom

+1

, пожалуйста, добавьте свой logcat – AbhayBohra

+1

'while (i! = 1)' - наверняка 'while (i! = - 1)'? –

ответ

1

inputStream.read() возвращает -1 в конце потока. Ваш while (i!=1) проверяет 1 вместо -1 и попадает в бесконечный цикл. Это вырастает byteArrayOutputStream до огромного размера, что в конечном итоге превышает память и вызывает крушение. Исправьте заявление while.

+0

Спасибо. Это сработало ! –

0

Посмотрите внимательно на журнал. Соответствующие линии:

com.example.krishna.festival, PID: 4026 java.lang.OutOfMemoryError: Failed to allocate a 268435468 byte allocation with 4194304 free bytes and 251MB until OOM at 

и

java.io.ByteArrayOutputStream.write(ByteArrayOutputStream.java:122) at 

Таким образом, в основном, ваша запись в массив байт поток вывода вызывая Out Of Memory Exception.

Как указано @degs, это связано с тем, что у вас есть бесконечный цикл, который заставит вашу программу продолжать писать в Stream, пока не закончится память.

Смежные вопросы