我的申请中确实有一个奇怪的错误。 我的应用程序崩溃(不介意崩溃,我大致知道为什么 - 类加载器)当我直接从操作系统启动应用程序,然后通过任何任务杀手从后台杀死它(这是重现崩溃的几种方法之一始终如一 - >模拟操作系统释放内存并关闭应用程序)并尝试重新启动它。
问题是,如果我使用以下命令通过adb shell启动应用程序:
adb shell am start -a android.intent.action.MAIN -n com.my.packagename/myLaunchActivity
我无法重现崩溃。
Android OS调用应用程序的方式与上述调用相比有什么不同吗?
编辑:添加了清单(只是更改了名称)
<?xml version="1.0" ?>
<manifest android:versionCode="5" android:versionName="1.05" package="com.my.sample" xmlns:android="http://schemas.android.com/apk/res/android">
<uses-sdk android:minSdkVersion="7"/>
<application android:icon="@drawable/square_my_logo" android:label="@string/app_name">
<activity android:label="@string/app_name" android:name="com.my.InfoActivity" android:screenOrientation="landscape"></activity>
<activity android:label="@string/app_name" android:name="com.my2.KickStart" android:screenOrientation="landscape"/>
<activity android:label="@string/app_name" android:name="com.my2.Launcher" android:screenOrientation="landscape">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
</application>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/></manifest>
从adb shell启动com.my2.Launcher
答案 0 :(得分:1)
我能看到的第一件事是,如果你从启动器图标启动应用程序,Intent包含CATEGORY“android.intent.category.LAUNCHER”并使用adb shell am
它不会。
此外,当您通过启动器图标启动时,会设置Intent标志FLAG_ACTIVITY_RESET_TASK_IF_NEEDED
(0x200000),但在adb shell
情况下则不是。
不确定这些是否会对您的崩溃行为产生影响,但它会回答这个问题。