我用广播启动activity,  有时会起不起来········大家说说为什么?

解决方案 »

  1.   

    广播执行周期很短!如果当前内存太小,启动Activity等耗时操作就会失败!
    所以建议不要直接使用广播启动Activity!
    广播接收到消息后,在状态栏弹出消息(Notification)提醒,使用Notification启动Activity!
    楼主试试吧!
      

  2.   

    比如广播启动Activity1.class public void onReceive(Context context, Intent intent) {
    // TODO Auto-generated method stub
    NotificationManager myNoti=(NotificationManager)context.getSystemService(Service.NOTIFICATION_SERVICE);
    Notification myNotification=new Notification();
    myNotification.icon=R.drawable.icon;
    myNotification.tickerText="启动Activity";
    Intent myIntent=new Intent(context,Activity1.class);
    PendingIntent pi=PendingIntent.getActivity(context, 0, myIntent, 0);
    myNotification.setLatestEventInfo(context, "提示","启动Activity", pi);
    myNoti.notify();
    }试试吧!
      

  3.   


    最后一句刚才写错拉!!
    myNoti.notify(0,myNotification);
      

  4.   


    谢谢···但是我原来就用这个试了····就是广播启动acticity 有时起不起来 ··,
    activity启动的时间不一样···广播的时间是有限的···
      导致有些起不起来···
      

  5.   

    广播时间有限这个说法不标准。
    广播接收者的处理不应占有太多cpu时钟。
    另外,有的时候activity不能起来,大部分是因为你activity的问题。
    你分析oncreate,onstart,及onresume方法中的代码。
    最后,还有启动activity时的,一些flag也是很关键的。
      

  6.   

    android的广播是消息队列的方式,虽然效率上可能会不高,但还不至于启动不了吧。
    debug跟踪下你的activity,看看到底问题处在哪里了,只直接收不到onReceive,还是其他原因。
      

  7.   

    大家好  我解决了··主要是activity 的oncreat()方法只会被实例化一次,而onstart()方法会被多次调用, 所以不要在activity中多次去调用业务处理····
    有多个业务处理时,可以使用service去处理···
      

  8.   

    你确定这是说的activity?
    主要是activity 的oncreat()方法只会被实例化一次,而onstart()方法会被多次调用……