在设备启动时启动应用程序时出错

时间:2015-08-17 18:30:23

标签: java android onresume

我正在构建一个应用程序,需要在我的Android设备首次启动时启动,该工作正常。我正在解析一个XML文件,并根据我从XML文件中获取的值,从我的主要活动开始另一个Activity但是当我 我开始尝试从我的MainActivity onCreate启动一个Activity我开始收到以下错误。

01-03 12:06:41.170    7854-7854/com.example.asiahyd.gpsdemo E/ActivityThread﹕ Performing stop of activity that is not resumed: {com.example.asiahyd.gpsdemo/com.example.asiahyd.gpsdemo.MyActivity}
java.lang.RuntimeException: Performing stop of activity that is not resumed: {com.example.asiahyd.gpsdemo/com.example.asiahyd.gpsdemo.MyActivity}
        at android.app.ActivityThread.performStopActivityInner(ActivityThread.java:3344)
        at android.app.ActivityThread.handleStopActivity(ActivityThread.java:3425)
        at android.app.ActivityThread.access$1100(ActivityThread.java:151)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1332)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:135)
        at android.app.ActivityThread.main(ActivityThread.java:5254)
        at java.lang.reflect.Method.invoke(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:372)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:902)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:697)

这是我的MainActivity onCreate方法

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    check = getIntent().getExtras().getBoolean("startUp");
    setContentView(R.layout.activity_my);

    String baseDir = Environment.getExternalStorageDirectory().toString() + "/Automation";

    File f = new File(baseDir);
    int numOfFiles = f.listFiles().length;

    File[] temp = f.listFiles();

    try {
        parseData(temp[0]);
    } catch (ParserConfigurationException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    } catch (SAXException e) {
        e.printStackTrace();
    }

    if(check == true){
        Intent i = new Intent(getApplicationContext(), Result.class);
        i.putExtra("coldSelected", coldSelected);
        i.putExtra("warmSelected", warmSelected);
        i.putExtra("hotSelected", hotSelected);
        i.putExtra("onDeviceLogging", 0);
        startActivity(i);
    }
}

然后,这是我用于在设备启动时启动应用程序的活动

public class Bootup extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {

        if (intent.getAction().equalsIgnoreCase(Intent.ACTION_BOOT_COMPLETED)) {
            Toast.makeText(context, "Reboot completed! Starting your app!!!.", Toast.LENGTH_LONG).show();

            Intent i = new Intent(context, MyActivity.class);
            i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            i.putExtra("startUp", true);
            context.startActivity(i);
        }

    }
}

如果有人对我可能遇到此错误的原因有任何了解,我将非常感谢帮助

1 个答案:

答案 0 :(得分:2)

此处发现类似问题:Similar Issue on SO。解决方案似乎是将您的Intent添加到onResume()或onPostResume()。这是因为应用程序在高端手机上运行。

public void onResume(){
    super.onResume();
    //XML parse and intent here
}

或:

public void onPostResume(){
    super.onPostResume();
    //XML parse and intent here
}

这也是另一个可行的答案:

Handler handler = new Handler(new Handler.Callback() {
@Override
public boolean handleMessage(Message msg) {
    switch (msg.what) {
        case 1:
          //start activity with intent here

        default:
            break;
    }
    return false;
}
});

在onResume中调用它。

handler.sendEmptyMessageDelayed(1, 1000);

旁注:我还想建议如下创建意图:

Intent i = new Intent(MainActivity.this, Result.class);

我可以提供一个冗长的回答,为什么,但总之不要使用getApplicationContext(),除非你知道为什么:)