Android-приложение. Приложение работает очень медленно и вызывает ошибку
Я недавно начал заниматься в школе разработкой для Android, и мне интересно, почему мой код не работает? Любая помощь будет принята с благодарностью. Я создаю приложение Tip Tracker, чтобы помочь мне отслеживать мои советы при доставке пиццы. Я знаю, что подобное приложение было создано, но я хочу создать свое собственное, и это также мой окончательный проект на семестр. Сейчас я просто пытаюсь перемещаться между окнами, чтобы убедиться, что могу связать все вместе, прежде чем сойти с ума по пользовательскому интерфейсу. Я не вижу, где у меня на самом деле проблема, но я получаю сообщение об ошибке "К сожалению, [приложение] перестало работать" при нажатии кнопки "Доставка" на главном экране. Так что мое второе окно никогда не появляется. Кроме того, мое приложение очень медленное и иногда не отвечает. Спасибо всем, кто может помочь. Мой код выглядит следующим образом:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dip"
android:layout_weight="1"
android:gravity="center|bottom"
android:orientation="vertical">
<Button
android:layout_width="155dp"
android:layout_height="60dp"
android:layout_gravity="center_horizontal|center"
android:layout_marginBottom="10dp"
android:background="@drawable/button_bg"
android:text="Delivery"
android:id="@+id/deliveryButton" />
<Button
android:layout_width="155dp"
android:layout_height="60dp"
android:layout_gravity="center_horizontal|center"
android:layout_marginBottom="10dp"
android:background="@drawable/button_bg"
android:text="LOG"
android:id="@+id/logButton" />
<Button
android:layout_width="155dp"
android:layout_height="60dp"
android:layout_gravity="center_horizontal|center"
android:layout_marginBottom="10dp"
android:background="@drawable/button_bg"
android:text="MAPS"
android:id="@+id/mapsButton" />
Код для моего основного файла Java:
public class MainActivity extends AppCompatActivity {
private Button launchDeliveryActivity;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
launchDeliveryActivity = (Button) findViewById(R.id.deliveryButton);
launchDeliveryActivity.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View view)
{
launchActivity();
}
});
}
private void launchActivity()
{
Intent intent = new Intent(this, orderDetailsActivity.class);
startActivity(intent);
}
И мое второе окно - это то, что я быстро скомбинировал, чтобы быть уверенным, что смогу перейти с главного экрана на второе окно и обратно:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/order_details"
android:orientation="vertical">
<Button
android:layout_width="120dp"
android:layout_height="60dp"
android:text="Home"
android:id="@+id/homeScreenButton" />
</LinearLayout>
И, наконец, мой второй файл Java:
public class orderDetailsActivity extends AppCompatActivity {
private Button homeScreen;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.order_details);
homeScreen = (Button) findViewById(R.id.homeScreenButton);
homeScreen.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View view)
{
finish();
}
});
}
Журналы:
1:29. Выполнение задач: [:app:assemblyDebug]
1:29 утра Сборка Gradle завершена за 1 с 781 мс
1:31 AM Выполнение задач: [:app:assemblyDebug]
1:31 утра Сборка Gradle завершена в 7 с 15 мс
1:31 AM Instant Run выполнила полную сборку и установку, поскольку установка на устройстве не соответствует локальной сборке на диске. (Не показывать снова)
1:40. Выполнение задач: [:app:assemblyDebug]
1:40 утра Сборка Gradle завершена за 1 с 203 мс
1:43 AM Выполнение задач: [:app:assemblyDebug]
1:43 утра Сборка Gradle закончилась за 983 мс
РЕДАКТИРОВАТЬ: Logcat является:
03-27 03:37:59.550 31525-31525/com.example.boley.personaldeliveryassistant E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.boley.personaldeliveryassistant, PID: 31525
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.boley.personaldeliveryassistant/com.example.boley.personaldeliveryassistant.orderDetailsActivity}: android.view.InflateException: Binary XML file line #2: Binary XML file line #2: Error inflating class <unknown>
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3253)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3349)
at android.app.ActivityThread.access$1100(ActivityThread.java:221)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1794)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:158)
at android.app.ActivityThread.main(ActivityThread.java:7224)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
Caused by: android.view.InflateException: Binary XML file line #2: Binary XML file line #2: Error inflating class <unknown>
at android.view.LayoutInflater.inflate(LayoutInflater.java:551)
at android.view.LayoutInflater.inflate(LayoutInflater.java:429)
at android.view.LayoutInflater.inflate(LayoutInflater.java:380)
at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:280)
at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140)
at com.example.boley.personaldeliveryassistant.orderDetailsActivity.onCreate(orderDetailsActivity.java:15)
at android.app.Activity.performCreate(Activity.java:6876)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1135)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3206)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3349)
at android.app.ActivityThread.access$1100(ActivityThread.java:221)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1794)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:158)
at android.app.ActivityThread.main(ActivityThread.java:7224)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
Caused by: android.view.InflateException: Binary XML file line #2: Error inflating class <unknown>
at android.view.LayoutInflater.createView(LayoutInflater.java:657)
at com.android.internal.policy.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:58)
at android.view.LayoutInflater.onCreateView(LayoutInflater.java:706)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:774)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:716)
at android.view.LayoutInflater.inflate(LayoutInflater.java:498)
at android.view.LayoutInflater.inflate(LayoutInflater.java:429)
at android.view.LayoutInflater.inflate(LayoutInflater.java:380)
at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:280)
at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140)
at com.example.boley.personaldeliveryassistant.orderDetailsActivity.onCreate(orderDetailsActivity.java:15)
at android.app.Activity.performCreate(Activity.java:6876)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1135)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3206)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3349)
at android.app.ActivityThread.access$1100(ActivityThread.java:221)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1794)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:158)
at android.app.ActivityThread.main(ActivityThread.java:7224)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Constructor.newInstance(Native Method)
at android.view.LayoutInflater.createView(LayoutInflater.java:631)
at com.android.internal.policy.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:58)
at android.view.LayoutInflater.onCreateView(LayoutInflater.java:706)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:774)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:716)
at android.view.LayoutInflater.inflate(LayoutInflater.java:498)
at android.view.LayoutInflater.inflate(LayoutInflater.java:429)
at android.view.LayoutInflater.inflate(LayoutInflater.java:380)
at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:280)
at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140)
at com.example.boley.personaldeliveryassistant.orderDetailsActivity.onCreate(orderDetailsActivity.java:15)
at android.app.Activity.performCreate(Activity.java:6876)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1135)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3206)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3349)
at android.app.ActivityThread.access$1100(ActivityThread.java:221)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1794)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:158)
at android.app.ActivityThread.main(ActivityThread.java:7224)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
Caused by: java.lang.OutOfMemoryError: Failed to allocate a 207355916 byte allocation with 16773008 free bytes and 53MB until OOM
at dalvik.system.VMRuntime.newNonMovableArray(Native Method)
at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method)
at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:856)
at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:675)
at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:2228)
at android.content.res.Resources.loadDrawableForCookie(Resources.java:4215)
at android.content.res.Resources.loadDrawable(Resources.java:4089)
at android.content.res.Resources.loadDrawable(Resources.java:3939)
at android.content.res.TypedArray.getDrawable(TypedArray.java:886)
at android.view.View.<init>(View.java:4230)
at android.view.ViewGroup.<init>(ViewGroup.java:589)
at android.widget.LinearLayout.<init>(LinearLayout.java:202)
at android.widget.LinearLayout.<init>(LinearLayout.java:198)
at android.widget.LinearLayout.<init>(LinearLayout.java:194)
at java.lang.reflect.Constructor.newInstance(Native Method)
at android.view.LayoutInflater.createView(LayoutInflater.java:631)
at com.android.internal.policy.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:58)
at android.view.LayoutInflater.onCreateView(LayoutInflater.java:706)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:774)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:716)
at android.view.LayoutInflater.inflate(LayoutInflater.java:498)
at android.view.LayoutInflater.inflate(LayoutInflater.java:429)
at android.view.LayoutInflater.inflate(LayoutInflater.java:380)
at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:280)
at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140)
at com.example.boley.personaldeliveryassistant.orderDetailsActivity.onCreate(orderDetailsActivity.java:15)
at android.app.Activity.performCreate(Activity.java:6876)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1135)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3206)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3349)
at android.app.ActivityThread.access$1100(ActivityThread.java:221)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1794)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:158)
at android.app.ActivityThread.main(ActivityThread.java:7224)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
2 ответа
Подозреваемый ANR может быть нарисован "order_details". Как нет другого компонента в вашем втором действии. Пожалуйста, проверьте размер отрисовки "order_details". Если он огромен, то это может быть причиной ANR. Попробуйте, изменив Drawable или удалив его.
Пожалуйста, проверьте журналы устройства, у него будет тег "I_am anr". Там может быть некоторая информация в журналах для ANR.
Я думаю, что ошибка становится причиной: java.lang.OutOfMemoryError: Не удалось выделить 207355916 байт с 16773008 свободными байтами и 53 МБ, показывающими в журнале, поэтому сначала удалите изображение из Order_details Linearlayout и проверьте, и если вы хотите использовать это изображение, то уменьшите размер и установите время выполнения, проверьте это