Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/218.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Autostart应用程序无法解释的崩溃_Android_Android Intent_Boot_Autostart_Android Broadcast - Fatal编程技术网

Android Autostart应用程序无法解释的崩溃

Android Autostart应用程序无法解释的崩溃,android,android-intent,boot,autostart,android-broadcast,Android,Android Intent,Boot,Autostart,Android Broadcast,主要活动代码为: package com.example.testing; import android.os.Bundle; import android.app.Activity; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.view.Menu; public class MainAct

主要活动代码为:

    package com.example.testing;

import android.os.Bundle;
import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.view.Menu;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
    public class Boot extends BroadcastReceiver{

        /*@Override
        public void onReceive(Context context, Intent intent) {
                Intent i = new Intent(context, MainActivity.class);
                i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                i.addFlags(Intent.FLAG_FROM_BACKGROUND);
                context.startActivity(i);  
        }*/
        @Override
        public void onReceive(Context context, Intent intent) {
            // make sure you receive "BOOT_COMPLETED"
            if ((intent.getAction() != null) && (intent.getAction().equals("android.intent.action.BOOT_COMPLETED")))
            {
                // Start the service or activity 
                Intent i = new Intent(context, MainActivity.class);
                i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                i.addFlags(Intent.FLAG_FROM_BACKGROUND);
                i.addFlags(Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT);
                try {
                    Thread.sleep(120000);
                } catch (InterruptedException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                context.startActivity(i); 
            }
        }

   }
}
舱单:

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

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="17" />
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.example.testing.second"
            android:label="second" >
        </activity>
        <activity
            android:name="com.example.testing.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <receiver android:enabled="true" android:name=".Boot" android:permission="android.permission.RECEIVE_BOOT_COMPLETED">
        <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED" />
                <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
        </receiver>
    </application>

</manifest>

在Emulator中,应用程序启动(Emulator for 4.0.3 ICS),但在我的ICS 4.0.4 SonyEricsson上,它Crass也用三星Galaxy 2.2 Froyo Android测试了这一点,仍然存在同样的问题,请帮助

我添加了线程睡眠,因为应用程序在手机启动时崩溃,所以我认为这是由于设备上的资源过载造成的,这被认为是无用的

我认为这是LOGCAT的摘录,它定义了这个问题

I/ActivityManager(  274): Start proc com.yahoo.mobile.client.android.mail for broadcast com.yahoo.mobile.client.android.mail/com.yahoo.mobile.client.share.update.SoftwareUpdateSystemBroadcastReceiver: pid=805 uid=10014 gids={3003, 1007, 1015}
D/PhoneStatusBar(  359): disable: < expand icons alerts ticker system_info BACK HOME recent* CLOCK >
D/PhoneStatusBar(  359): disable: < expand icons alerts ticker system_info back* home* recent clock* >
I/ActivityManager(  274): Start proc com.example.testing for broadcast com.example.testing/.Boot: pid=824 uid=10153 gids={}
E/AndroidRuntime(  824): FATAL EXCEPTION: main
E/AndroidRuntime(  824): java.lang.RuntimeException: Unable to instantiate receiver com.example.testing.Boot: java.lang.ClassNotFoundException: com.example.testing.Boot
E/AndroidRuntime(  824):    at android.app.ActivityThread.handleReceiver(ActivityThread.java:2111)
E/AndroidRuntime(  824):    at android.app.ActivityThread.access$1500(ActivityThread.java:127)
E/AndroidRuntime(  824):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1208)
E/AndroidRuntime(  824):    at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime(  824):    at android.os.Looper.loop(Looper.java:137)
E/AndroidRuntime(  824):    at android.app.ActivityThread.main(ActivityThread.java:4441)
E/AndroidRuntime(  824):    at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime(  824):    at java.lang.reflect.Method.invoke(Method.java:511)
E/AndroidRuntime(  824):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
E/AndroidRuntime(  824):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
E/AndroidRuntime(  824):    at dalvik.system.NativeStart.main(Native Method)
E/AndroidRuntime(  824): Caused by: java.lang.ClassNotFoundException: com.example.testing.Boot
E/AndroidRuntime(  824):    at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61)
E/AndroidRuntime(  824):    at java.lang.ClassLoader.loadClass(ClassLoader.java:501)
E/AndroidRuntime(  824):    at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
E/AndroidRuntime(  824):    at android.app.ActivityThread.handleReceiver(ActivityThread.java:2106)
E/AndroidRuntime(  824):    ... 10 more
I/BootReceiver(  274): Copying /proc/last_kmsg to DropBox (SYSTEM_LAST_KMSG)
I/ActivityManager(274):启动proc com.yahoo.mobile.client.android.mail for broadcast com.yahoo.mobile.client.android.mail/com.yahoo.mobile.client.share.update.SoftwareUpdateSystemBroadcastReceiver:pid=805 uid=10014 gids={3003,1007,1015}
D/PhoneStatusBar(359):禁用:
D/PhoneStatusBar(359):禁用:
I/ActivityManager(274):启动proc com.example.testing for broadcast com.example.testing/.Boot:pid=824 uid=10153 gids={}
E/AndroidRuntime(824):致命异常:主
E/AndroidRuntime(824):java.lang.RuntimeException:无法实例化receiver com.example.testing.Boot:java.lang.ClassNotFoundException:com.example.testing.Boot
E/AndroidRuntime(824):位于android.app.ActivityThread.HandlerReceiver(ActivityThread.java:2111)
E/AndroidRuntime(824):位于android.app.ActivityThread.access$1500(ActivityThread.java:127)
E/AndroidRuntime(824):位于android.app.ActivityThread$H.handleMessage(ActivityThread.java:1208)
E/AndroidRuntime(824):位于android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime(824):位于android.os.Looper.loop(Looper.java:137)
E/AndroidRuntime(824):位于android.app.ActivityThread.main(ActivityThread.java:4441)
E/AndroidRuntime(824):位于java.lang.reflect.Method.Invokenactive(本机方法)
E/AndroidRuntime(824):位于java.lang.reflect.Method.invoke(Method.java:511)
E/AndroidRuntime(824):位于com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
E/AndroidRuntime(824):位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
E/AndroidRuntime(824):位于dalvik.system.NativeStart.main(本机方法)
E/AndroidRuntime(824):由以下原因引起:java.lang.ClassNotFoundException:com.example.testing.Boot
E/AndroidRuntime(824):位于dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61)
E/AndroidRuntime(824):位于java.lang.ClassLoader.loadClass(ClassLoader.java:501)
E/AndroidRuntime(824):位于java.lang.ClassLoader.loadClass(ClassLoader.java:461)
E/AndroidRuntime(824):位于android.app.ActivityThread.HandlerReceiver(ActivityThread.java:2106)
E/AndroidRuntime(824):。。。10多
I/BootReceiver(274):将/proc/last\u kmsg复制到DropBox(SYSTEM\u last\u kmsg)

logcat可以解释您的问题<代码>com.example.testing.Boot不存在。。。这是正确的,因为
Boot
MainActivity
的一个内部类,所以它至少应该是
com.example.testing.MainActivity.Boot


但是,我认为不允许使用内部类作为接收方,因为系统不知道应该调用哪个“外部类”?因此,请将它放在
com.example.testing
包中自己的文件中。

请输入崩溃的stacktrace。Android会在开机时提供Logcat吗?连接到开发PC“它崩溃了”。。。我们该怎么处理你的问题?!你真的需要提供一个堆栈跟踪,或者至少告诉我们哪个部分崩溃了!Android总是提供strack跟踪信息。您甚至可以在应用程序崩溃后使用
adb logcat
获取它,而无需连接到您的开发PC。在这种情况下,您可以尝试使用自定义
UncaughtExceptionHandler
并将stacktrace保存到文件中。但在此之前,您可能应该尝试将接收器代码移动到其他文件。您不应将其用作
活动的非静态内部类。好的,这似乎是解决我问题的最有可能的方法。我不知道您对广播接收器有多少经验,但请查看以了解有关它们的其他详细信息我不知道。。。你的代码真的在模拟器上被调用了吗?有关更多信息,请查看emulator logcat。。?真实设备和仿真器之间有很多区别。因此,当某个东西在模拟器上工作时,它不会(非常)说明它是否在真实设备上工作……是的,这就是为什么我相信在真实设备上进行测试的原因