Android自动启动活动(应用启动两次)

时间:2012-02-13 13:11:26

标签: android android-activity autostart

我想在设备启动完成后运行我的应用程序。 为此,我在互联网上找到了一些有用的代码:

public class MyBootCompleteReceiver extends BroadcastReceiver
{

    @Override
    public void onReceive(Context context, Intent intent) 
    {
        if(intent.getAction() != null && intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)) 
        {  
           Intent pushIntent = new Intent(context, MainActivity.class);  
           pushIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

           context.startActivity(pushIntent);  
        } 
    }
}

和Manifest条目:

    <receiver android:name="MyBootCompleteReceiver" android:enabled="true" android:exported="false" 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> 

现在,如果我启动设备,应用程序似乎启动了两次。 然后我尝试用“REORDER_TO_FRONT”替换“NEW_TASK”标志(我也在互联网上读过这个),但如果我这样做,我的应用程序在启动时崩溃了。 此外,如果我删除所有标志,它也会崩溃。

希望你能帮忙!

2 个答案:

答案 0 :(得分:1)

因此...

经过长时间的长时间测试,我发现问题应该是我的实体平板电脑(asus eee pad transfortem android version 3.2.1)。

因为我已经在模拟器(Android版本3.2)中尝试了它,并且我发布的源代码(在此线程的顶部)工作得很好。 没有启动应用程序的两倍,没有错误。 即使你删除了“pushIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);”代码有效。

所以似乎我必须等待更新(也许在Android 4.0上)。

我希望这可以帮助那些有同样问题的人。

答案 1 :(得分:0)

在清单文件中的活动中使用启动完整意图过滤器。

<activity ....>
     <intent-filter>
        <action android:name="android.intent.action.BOOT_COMPLETED"/>
        <category android:name="android.intent.category.DEFAULT" />          
    </intent-filter>      
</activity>

我希望它有所帮助...