2015-07-02 4 views
3

Мое приложение выполняйте следующие сценарии ...Android служба не работает

1.[Main Activity]

  • нить повторить сон (5000)
  • если нить сна(), StartService()

2.[Service.class] sendBroadcast()

3.[Main Activity - BroadcastReceiver] Toast()


Нить рабочая, чистая, но сервис не называться.

зарегистрироваться в Manifest.xml

И я создаю BroadcastReceiver динамику.


manifest.xml

<application 
    android:allowBackup="true" 
    android:icon="@mipmap/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme" > 
    <activity 
     android:name=".MainActivity" 
     android:label="@string/app_name" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <service android:name=".Service" 
      android:enabled="true" /> 
</application> 

MainActivity.java

public class MainActivity extends ActionBarActivity implements Runnable { 
Thread mThread; 
Boolean mSleep = false; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    Log.d("Activity", "onCreate()"); 
} 
@Override 
protected void onStart() { 
    super.onStart(); 
    Log.d("Activity", "onStart()"); 

    mThread = new Thread(this); 
    mThread.start(); 
} 

@Override 
public void run() { 
    Log.d("Thread", "run()"); 

    while(true) { 
     try { 
      mThread.sleep(5000); 
     } catch (InterruptedException e) { 
      //empty 
     } 
     Log.d("Thread", "sleep"); 
     mSleep = true; 
     Log.d("Thread1", mSleep.toString()); 
     Context context = getApplicationContext(); 
     context.startService(new Intent(MainActivity.this, Service.class)); 

     mSleep = false; 
     Log.d("Thread2", mSleep.toString()); 
    } 
} 

@Override 
protected void onResume() { 
    super.onResume(); 
    Log.d("Activity", "onResume()"); 

    Log.d("Is it main thread?", mThread.currentThread().getName()); 

    IntentFilter filter = new IntentFilter(); 
    //No Action 
    registerReceiver(mBroadcastReceiver, filter); 
} 

@Override 
protected void onPause() { 
    super.onPause(); 
    Log.d("Activity", "onPause()"); 

    unregisterReceiver(mBroadcastReceiver); 
} 

BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     Toast.makeText(context, "sleep sleep sleep", Toast.LENGTH_SHORT).show(); 
    } 
}; 
} 

Service.class

public class Service extends android.app.Service { 
    @Override 
    public void onCreate() { 
     super.onCreate(); 
     Log.d("Service", "onCreate()"); 

     Intent intent = new Intent();  
     sendBroadcast(intent); 
    } 

    @Override 
    public int onStartCommand(Intent intent, int flags, int startId) { 
     sendBroadcast(intent); 
     return START_STICKY; 
    } 

    @Override 
    public IBinder onBind(Intent intent) { 
     Log.d("Service", "onBind()"); 
     return null; 
    } 
} 

+0

Какая проблема в годовом исчислении сталкиваются? Любая ошибка, если да, пожалуйста, зарегистрируйтесь. – RajSharma

ответ

0

проверить пакет, который вы импортировали, служба здесь не android.app.Service

context.startService(new Intent(MainActivity.this, Service.class)); 
+0

Мои имена классов java - «MainActivity», «Service». –

+0

Я не вводил 'android.app.Service' там. –

+0

У моего кода не было никаких ошибок, но проблема может быть запущена. Спасибо! –

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