Android WebView应用程序在计算机上运行正常但在Mobile上崩溃

时间:2017-10-09 12:00:40

标签: android crash

该应用程序在模拟器上工作得非常好,但在移动设备上不断崩溃。这开始发生在我使用SplashScreen时,之前它在移动设备上工作得很好。也许SplashScreen可能是问题但是,我无法找到确切的问题所以我在这里显示所有文件。

MainActivity.java

    package com.yoalfaaz.yoalfaaz;

import android.content.Intent;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v4.widget.SwipeRefreshLayout;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.ShareActionProvider;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.view.Menu;
import android.view.MenuItem;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.support.v4.view.MenuItemCompat;

public class MainActivity extends AppCompatActivity {
    private WebView YoWeb;
    private ShareActionProvider mShareActionProvider;

    SwipeRefreshLayout swipe;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        swipe = (SwipeRefreshLayout) findViewById(R.id.swipe);
        swipe.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
            @Override
            public void onRefresh() {
                LoadWeb();
            }
        });
        LoadWeb();
    }

    public void LoadWeb() {
        YoWeb = (WebView)findViewById(R.id.webview);
        WebSettings webSettings = YoWeb.getSettings();
        webSettings.setJavaScriptEnabled(true);
        YoWeb.loadUrl("http://www.yoalfaaz.com");
        swipe.setRefreshing(true);
        YoWeb.setWebViewClient(new WebViewClient() {

            //onPageFinished Method
            public void onPageFinished(WebView view, String url) {
                //Hide the SwipeRefreshLayout
                swipe.setRefreshing(false);
            }
        });
    }

    @Override
    public void onBackPressed() {
        if (YoWeb.canGoBack()) {
            YoWeb.goBack();
        } else {
            super.onBackPressed();
        }
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        switch (item.getItemId()) {
            case R.id.action_settings:

                Intent sharingIntent = new Intent(android.content.Intent.ACTION_SEND);
                sharingIntent.setType("text/plain");
                String shareBodyText = "Check it out. Your message goes here";
                sharingIntent.putExtra(android.content.Intent.EXTRA_SUBJECT,"Subject here");
                sharingIntent.putExtra(android.content.Intent.EXTRA_TEXT, shareBodyText);
                startActivity(Intent.createChooser(sharingIntent, "Sharing Option"));
                return true;

            default:
                return super.onOptionsItemSelected(item);
        }
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate menu resource file.
        getMenuInflater().inflate(R.menu.menu_main, menu);

        // Locate MenuItem with ShareActionProvider
        MenuItem item = menu.findItem(R.id.menu_item_share);

        // Fetch and store ShareActionProvider
        mShareActionProvider = (ShareActionProvider) MenuItemCompat.getActionProvider(item);

        // Return true to display menu
        return true;
    }

    // Call to update the share intent
    private void setShareIntent(Intent shareIntent) {
        if (mShareActionProvider != null) {
            mShareActionProvider.setShareIntent(shareIntent);
        }
    }
}

的AndroidManifest.xml

    <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.yoalfaaz.yoalfaaz">

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

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity
            android:name=".MainActivity"
            android:configChanges="orientation|keyboardHidden"
            android:label="@string/app_name"
            android:theme="@style/AppTheme.NoActionBar">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>
        <activity android:name=".SplashScreen">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

SplashScreen.java

package com.yoalfaaz.yoalfaaz;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

public class SplashScreen extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_splash_screen);
        Thread myThread = new Thread() {
            @Override
            public void run() {
                try {
                    sleep(3000);
                    Intent intent = new Intent(getApplicationContext(), MainActivity.class);
                    startActivity(intent);
                    finish();
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        };
            myThread.start();
    }
}

activity_splash_screen.java

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/colorPrimary"
    tools:context="com.yoalfaaz.yoalfaaz.SplashScreen">

    <ImageView
        android:layout_width="240dp"
        android:layout_height="240dp"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintBottom_toBottomOf="parent"
        android:src="@drawable/ss"
        />
</android.support.constraint.ConstraintLayout>

content_main.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    tools:context="com.yoalfaaz.yoalfaaz.MainActivity"
    tools:showIn="@layout/activity_main">

    <android.support.v4.widget.SwipeRefreshLayout

        android:id="@+id/swipe"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent">

        <WebView
            android:id="@+id/webview"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            />

    </android.support.v4.widget.SwipeRefreshLayout>
</android.support.constraint.ConstraintLayout>

activity_main.xml中

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.yoalfaaz.yoalfaaz.MainActivity">

    <android.support.design.widget.AppBarLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:theme="@style/AppTheme.AppBarOverlay">

        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            android:background="?attr/colorPrimary"
            app:popupTheme="@style/AppTheme.PopupOverlay" />

    </android.support.design.widget.AppBarLayout>

    <include layout="@layout/content_main" />

</android.support.design.widget.CoordinatorLayout>

logcat的

10-09 19:27:20.114 7919-7919/com.yoalfaaz.yoalfaaz E/AndroidRuntime: FATAL EXCEPTION: main
                                                                     Process: com.yoalfaaz.yoalfaaz, PID: 7919
                                                                     java.lang.RuntimeException: Canvas: trying to draw too large(118914624bytes) bitmap.
                                                                         at android.view.DisplayListCanvas.throwIfCannotDraw(DisplayListCanvas.java:260)
                                                                         at android.graphics.Canvas.drawBitmap(Canvas.java:1415)
                                                                         at android.graphics.drawable.BitmapDrawable.draw(BitmapDrawable.java:545)
                                                                         at android.widget.ImageView.onDraw(ImageView.java:1299)
                                                                         at android.view.View.draw(View.java:17086)
                                                                         at android.view.View.updateDisplayListIfDirty(View.java:16068)
                                                                         at android.view.View.draw(View.java:16852)
                                                                         at android.view.ViewGroup.drawChild(ViewGroup.java:3768)
                                                                         at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3554)
                                                                         at android.view.View.draw(View.java:17089)
                                                                         at android.view.View.updateDisplayListIfDirty(View.java:16068)
                                                                         at android.view.View.draw(View.java:16852)
                                                                         at android.view.ViewGroup.drawChild(ViewGroup.java:3768)
                                                                         at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3554)
                                                                         at android.view.View.updateDisplayListIfDirty(View.java:16063)
                                                                         at android.view.View.draw(View.java:16852)
                                                                         at android.view.ViewGroup.drawChild(ViewGroup.java:3768)
                                                                         at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3554)
                                                                         at android.view.View.updateDisplayListIfDirty(View.java:16063)
                                                                         at android.view.View.draw(View.java:16852)
                                                                         at android.view.ViewGroup.drawChild(ViewGroup.java:3768)
                                                                         at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3554)
                                                                         at android.view.View.updateDisplayListIfDirty(View.java:16063)
                                                                         at android.view.View.draw(View.java:16852)
                                                                         at android.view.ViewGroup.drawChild(ViewGroup.java:3768)
                                                                         at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3554)
                                                                         at android.view.View.updateDisplayListIfDirty(View.java:16063)
                                                                         at android.view.View.draw(View.java:16852)
                                                                         at android.view.ViewGroup.drawChild(ViewGroup.java:3768)
                                                                         at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3554)
                                                                         at android.view.View.draw(View.java:17089)
                                                                         at com.android.internal.policy.DecorView.draw(DecorView.java:751)
                                                                         at android.view.View.updateDisplayListIfDirty(View.java:16068)
                                                                         at android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:657)
                                                                         at android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:663)
                                                                         at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:771)
                                                                         at android.view.ViewRootImpl.draw(ViewRootImpl.java:2808)
                                                                         at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:2616)
                                                                         at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2223)
                                                                         at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1258)
                                                                         at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6348)
                                                                         at android.view.Choreographer$CallbackRecord.run(Choreographer.java:871)
                                                                         at android.view.Choreographer.doCallbacks(Choreographer.java:683)
                                                                         at android.view.Choreographer.doFrame(Choreographer.java:619)
                                                                         at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:857)
                                                                         at android.os.Handler.handleCallback(Handler.java:751)
                                                                         at android.os.Handler.dispatchMessage(Handler.java:95)
                                                                         at android.os.Looper.loop(Looper.java:154)
                                                                         at android.app.ActivityThread.main(ActivityThread.java:6123)
                                                                         at java.lang.reflect.Method.invoke(Native Method)
                                                                         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867)
                                                                         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:757)

Idea.log

我上传了idea.log file here.

0 个答案:

没有答案
相关问题