Мое приложение выполняйте следующие сценарии ...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;
}
}
Какая проблема в годовом исчислении сталкиваются? Любая ошибка, если да, пожалуйста, зарегистрируйтесь. – RajSharma