gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 04:26:46 25 4
gpt4 key购买 nike

我正在构建一个应用程序,需要在我的 Android 设备首次启动时启动,该应用程序运行良好。我正在解析一个 XML 文件,并根据从 XML 文件中获取的值,从我的主要 Activity 中启动另一个 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);
}
}

然后这是我用来在设备启动时启动应用程序的 Activity

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);
}

}
}

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

最佳答案

此处发现类似问题: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 ,如下所示:

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

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

关于java - 在设备启动时启动应用程序时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32057288/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com