问一个问题,有做过的同学帮忙看一下:
系统android 2.1我现在要实现程序自启动工程,搜索了一下,大致实现流程如下:实现一个BroadcastReceiver类,然后在其onReceive中判断系统启动时的ACTION_BOOT_COMPLETED 消息,如果收到消息,启动制定的Activity
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)) { 
Intent mBootIntent = new Intent(context, myproject.class);
mBootIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(mBootIntent);
}
}在AndroidManifest.xml 中指定相应的receiver & permission<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"></uses-permission><receiver android:name="StartupIntentReceiver"  
         
              <intent-filter>
                      <action android:name="android.intent.action.BOOT_COMPLETED" />
           <category android:name="android.intent.category.DEFAULT" />        
              </intent-filter>
        </receiver>上面的流程能实现开机自启动,但是有一个问题:程序启动后,按HOME键,然后在执行程序的时候,程序又从onCreate 开始执行,如果,手工启动的话,按HOME,再执行程序是从onresume 开始执行的 ?有没有遇到这个问题的?谢谢!

解决方案 »

  1.   

    这是个android 任务堆栈问题可以思考:
    开机通过实现BroadcastReceiver类启动应用的 按Home后的堆栈改变正常启动下,程序堆栈的进与出 按Home后堆栈改变
      

  2.   

    正常启动时,按HOME键,然后在执行程序是从onrestart 开始执行的,不是onCreate ,通过开机自动运行程序,按home后,再执行程序,会从onCreate 开始执行,这样将导致程序没有析构的情况下,重新执行而产生崩溃!
      

  3.   

    开机自启动后,要增加延时或者sleep处理,待HOME启动完毕程序执行onrestart