2015-08-03 6 views
0

Я пытаюсь создать приложение, которое запускает службу, которая отображает представление. То, что я пытаюсь сделать, - это быстро отобразить представление сразу после загрузки, но для его запуска требуется слишком много времени (> 1 минута). Мой BroadcastReceiver:запуск службы во время загрузки занимает слишком много времени, почему?

@Override 
public void onReceive(Context context, Intent intent) { 

    if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) { 
     Intent intentservice = new Intent(context,NewService.class); 
     try{ 
     context.startService(intentservice); 
     } 
     catch(Exception e){ 
      e.printStackTrace(); 
     } 
    } else if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) { 
     Intent intent11 = new Intent(context,MainActivity.class); 
     intent11.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
    } 
    else if(intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)) 
    {  
     context.startService(new Intent(context,NewService.class)); 
    } 

Manifest:

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/> 
<service android:name="com.example.p.NewService"></service> 
<receiver android:name="receiver.myReceiver" 
android:permission="android.permission.RECEIVE_BOOT_COMPLETED"> 
<intent-filter> 
    <action android:name="android.intent.action.BOOT_COMPLETED" /> 
    <action android:name="android.intent.action.SCREEN_OFF" /> 
    <action android:name="android.intent.action.SCREEN_ON" /> 
    <category android:name="android.intent.category.DEFAULT"/> 
</intent-filter>  
</receiver> 

, как поступить? Есть ли способ установить приоритет или что-то в этом роде?

+0

Я бы предположил, что проблема в том, что ваш телефон делает много вещей сразу после загрузки, и для вашего приложения недостаточно ресурсов, поэтому я действительно не думаю, что есть надежное решение вашей проблемы. Но на всякий случай, можете ли вы отправить код своего Сервиса? – Chaosit

ответ

2

Внутри приемника заменить разрешение с:

<intent-filter android:priority="1000"> 
     <action android:name="android.intent.action.BOOT_COMPLETED" /> 
    </intent-filter> 

Это должно ускорить вещи.

+0

Спасибо за ответ, это быстрее, чем раньше, но я хочу, чтобы он запускался до того, как все другое системное приложение (например, IME) означает добавление того же приоритета (или большего приоритета), как и они. Но в соответствии с [this] (http: // developer.android.com/guide/topics/manifest/intent-filter-element.html#priority), он должен быть <1000. Есть ли другой способ? – PPB

Смежные вопросы