[英]Android application works in emulator but failed in device
my android application works fine in emulator, but when i install the .apk and run, it said "Unfortunately 'application' has stopped" 我的Android应用程序可以在模拟器中正常运行,但是当我安装.apk并运行时,它说“不幸的是,“应用程序”已停止”
this is the androidmanifest.xml 这是androidmanifest.xml
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.android.baliweather"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="21" />
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity android:name=".Main"
android:label="@string/app_name"
android:theme="@android:style/Theme.NoTitleBar">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".Prakiraan"
android:label="@string/app_name"
android:theme="@android:style/Theme.NoTitleBar">
</activity>
<activity android:name=".Update"
android:label="@string/app_name"
android:theme="@android:style/Theme.NoTitleBar">
</activity>
<activity android:name=".Info"
android:label="@string/app_name"
android:theme="@android:style/Theme.NoTitleBar">
</activity>
</application>
error log: 错误日志:
09-02 15:25:01.372: E/AndroidRuntime(16394): FATAL EXCEPTION: main 09-02 15:25:01.372: E/AndroidRuntime(16394): android.os.NetworkOnMainThreadException 09-02 15:25:01.372: E/AndroidRuntime(16394): at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1133) 09-02 15:25:01.372: E/AndroidRuntime(16394): at libcore.io.BlockGuardOs.recvfrom(BlockGuardOs.java:163) 09-02 15:25:01.372: E/AndroidRuntime(16394): at libcore.io.IoBridge.recvfrom(IoBridge.java:519) 09-02 15:25:01.372: E/AndroidRuntime(16394): at java.net.PlainSocketImpl.read(PlainSocketImpl.java:489) 09-02 15:25:01.372: E/AndroidRuntime(16394): at java.net.PlainSocketImpl.access$000(PlainSocketImpl.java:46) 09-02 15:25:01.372: E/AndroidRuntime(16394): at java.net.PlainSocketImpl$PlainSocketInputStream.read(PlainSocketImpl.java:241) 09-02 15:25:01.372: E/AndroidRuntime(16394): at java.io.InputStream.read(InputStream.java:163) 09-02 15:25:01.372: E/AndroidRuntime(16394): at java.io.BufferedInputStream.fillbuf(Buf
09-02 15:25:01.372:E / AndroidRuntime(16394):致命异常:主09-02 15:25:01.372:E / AndroidRuntime(16394):android.os.NetworkOnMainThreadException 09-02 15:25:01.372: E / AndroidRuntime(16394):位于android.os.StrictMode $ AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1133)09-02 15:25:01.372:E / AndroidRuntime(16394):位于libcore.io.BlockGuardOs.recvfrom(BlockGuardOs .java:163)09-02 15:25:01.372:E / AndroidRuntime(16394):位于libcore.io.IoBridge.recvfrom(IoBridge.java:519)09-02 15:25:01.372:E / AndroidRuntime(16394) ):在java.net.PlainSocketImpl.read(PlainSocketImpl.java:489)09-02 15:25:01.372:E / AndroidRuntime(16394):在java.net.PlainSocketImpl.access $ 000(PlainSocketImpl.java:46)09 -02 15:25:01.372:E / AndroidRuntime(16394):at java.net.PlainSocketImpl $ PlainSocketInputStream.read(PlainSocketImpl.java:241)09-02 15:25:01.372:E / AndroidRuntime(16394):at java .io.InputStream.read(InputStream.java:163)09-02 15:25:01.372:E / AndroidRuntime(16394):at java.io.BufferedInputStream.fillbuf(Buf feredInputStream.java:142) 09-02 15:25:01.372: E/AndroidRuntime(16394): at java.io.BufferedInputStream.read(BufferedInputStream.java:227) 09-02 15:25:01.372: E/AndroidRuntime(16394): at libcore.io.Streams.readAsciiLine(Streams.java:201) 09-02 15:25:01.372: E/AndroidRuntime(16394): at libcore.net.http.HttpEngine.readResponseHeaders(HttpEngine.java:579) 09-02 15:25:01.372: E/AndroidRuntime(16394): at libcore.net.http.HttpEngine.readResponse(HttpEngine.java:827) 09-02 15:25:01.372: E/AndroidRuntime(16394): at libcore.net.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:283) 09-02 15:25:01.372: E/AndroidRuntime(16394): at libcore.net.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:177) 09-02 15:25:01.372: E/AndroidRuntime(16394): at java.net.URL.openStream(URL.java:462) 09-02 15:25:01.372: E/AndroidRuntime(16394): at com.android.baliweather.MyParser.xmlParsing(MyParser.java:43) 09-02 15:25:01.372: E/AndroidRuntime(16394): at com.android.baliweather.Pra
feredInputStream.java:142)09-02 15:25:01.372:E / AndroidRuntime(16394):at java.io.BufferedInputStream.read(BufferedInputStream.java:227)09-02 15:25:01.372:E / AndroidRuntime( 16394):位于libcore.io.Streams.readAsciiLine(Streams.java:201)09-02 15:25:01.372:E / AndroidRuntime(16394):位于libcore.net.http.HttpEngine.readResponseHeaders(HttpEngine.java:579 )09-02 15:25:01.372:E / AndroidRuntime(16394):位于libcore.net.http.HttpEngine.readResponse(HttpEngine.java:827)09-02 15:25:01.372:E / AndroidRuntime(16394):在libcore.net.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:283)09-02 15:25:01.372:E / AndroidRuntime(16394):在libcore.net.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:177) 09-02 15:25:01.372:E / AndroidRuntime(16394):at java.net.URL.openStream(URL.java:462)09-02 15:25:01.372:E / AndroidRuntime(16394):at com。 android.baliweather.MyParser.xmlParsing(MyParser.java:43)09-02 15:25:01.372:E / AndroidRuntime(16394):在com.android.baliweather.Pra kiraan$MyAsyncTask.onPostExecute(Prakiraan.java:60) 09-02 15:25:01.372: E/AndroidRuntime(16394): at com.android.baliweather.Prakiraan$MyAsyncTask.onPostExecute(Prakiraan.java:1) 09-02 15:25:01.372: E/AndroidRuntime(16394): at android.os.AsyncTask.finish(AsyncTask.java:631) 09-02 15:25:01.372: E/AndroidRuntime(16394): at android.os.AsyncTask.access$600(AsyncTask.java:177) 09-02 15:25:01.372: E/AndroidRuntime(16394): at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:644) 09-02 15:25:01.372: E/AndroidRuntime(16394): at android.os.Handler.dispatchMessage(Handler.java:99) 09-02 15:25:01.372: E/AndroidRuntime(16394): at android.os.Looper.loop(Looper.java:137) 09-02 15:25:01.372: E/AndroidRuntime(16394): at android.app.ActivityThread.main(ActivityThread.java:5214) 09-02 15:25:01.372: E/AndroidRuntime(16394): at java.lang.reflect.Method.invokeNative(Native Method) 09-02 15:25:01.372: E/AndroidRuntime(16394): at java.lang.reflect.Method.invoke(Method.java:525) 09-02 15:25:01.
kiraan $ MyAsyncTask.onPostExecute(Prakiraan.java:60)09-02 15:25:01.372:E / AndroidRuntime(16394):在com.android.baliweather.Prakiraan $ MyAsyncTask.onPostExecute(Prakiraan.java:1)09-02 15:25:01.372:E / AndroidRuntime(16394):位于android.os.AsyncTask.finish(AsyncTask.java:631)09-02 15:25:01.372:E / AndroidRuntime(16394):位于android.os.AsyncTask .access $ 600(AsyncTask.java:177)09-02 15:25:01.372:E / AndroidRuntime(16394):at android.os.AsyncTask $ InternalHandler.handleMessage(AsyncTask.java:644)09-02 15:25: 01.372:E / AndroidRuntime(16394):位于android.os.Handler.dispatchMessage(Handler.java:99)09-02 15:25:01.372:E / AndroidRuntime(16394):位于android.os.Looper.loop(Looper .java:137)09-02 15:25:01.372:E / AndroidRuntime(16394):位于android.app.ActivityThread.main(ActivityThread.java:5214)09-02 15:25:01.372:E / AndroidRuntime(16394) ):at java.lang.reflect.Method.invokeNative(本机方法)09-02 15:25:01.372:E / AndroidRuntime(16394):at java.lang.reflect.Method.invoke(Method.java:525)09 -02 15:25:01。 372: E/AndroidRuntime(16394): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:739) 09-02 15:25:01.372: E/AndroidRuntime(16394): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:555) 09-02 15:25:01.372: E/AndroidRuntime(16394): at dalvik.system.NativeStart.main(Native Method)
372:E / AndroidRuntime(16394):在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:739)09-02 15:25:01.372:E / AndroidRuntime(16394):在com.android .internal.os.ZygoteInit.main(ZygoteInit.java:555)09-02 15:25:01.372:E / AndroidRuntime(16394):在dalvik.system.NativeStart.main(本机方法)
android.os.NetworkOnMainThreadException
Pretty self-explainatory, right? 很好解释,对不对? You're doing network tasks (HTTP Requests and such) on the UI thread.
您正在UI线程上执行网络任务(HTTP请求等)。 You should run it in a separate thread.
您应该在单独的线程中运行它。
private class LongOperation extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... params) {
for (int i = 0; i < 5; i++) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
Thread.interrupted();
}
}
return "Executed";
}
@Override
protected void onPostExecute(String result) {
TextView txt = (TextView) findViewById(R.id.output);
txt.setText("Executed"); // txt.setText(result);
// might want to change "executed" for the returned string passed
// into onPostExecute() but that is upto you
}
@Override
protected void onPreExecute() {}
@Override
protected void onProgressUpdate(Void... values) {}
}
Above an example. 以上是一个例子。
Make it a inner class from your activity 从您的活动中使其成为内部课程
Once i am having the same issue after uploading it to playstore
. 将我上传到
playstore
后遇到同样的问题。
When app crashes you can see two buttons, force stop / OK and report . 当应用崩溃时,您会看到两个按钮,即强制停止/确定和报告 。 Click on
report button
and there you will find various tabs. 单击
report button
,您将在其中找到各种标签。 In one of the tabs you will get stacktrace. 在选项卡之一中,您将获得堆栈跟踪。 and then you can know where your error is...
然后您可以知道错误在哪里...
And one time clean the project and recreate an apk and then check also.. 一次清理项目并重新创建apk,然后再检查。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.