ServiceはBroadcastReceiverを介してActivityと通信する
4808 ワード
Activityクラスコード
サービスクラスコード
public class MainActivity extends AppCompatActivity {
IntentFilter intentFilter;
private BroadcastReceiver intentRecevicer = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(getBaseContext(),"onReceive => File download!",Toast.LENGTH_SHORT).show();
}
};
@Override
protected void onResume() {
super.onResume();
intentFilter = new IntentFilter();
intentFilter.addAction("FILE_DOWNLOAD_ACTION");
registerReceiver(intentRecevicer,intentFilter);
}
@Override
protected void onPause() {
super.onPause();
unregisterReceiver(intentRecevicer);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void startService(View view){
Log.i("Service","startService");
startService(new Intent(this,MyIntentService.class));
}
public void stopService(View view){
Log.i("Service","stopService");
}
}
サービスクラスコード
public class MyIntentService extends IntentService {
@Override
public void onDestroy() {
super.onDestroy();
Log.i("Service","MyIntentService Destroy");
}
public MyIntentService() {
super("MyIntentServiceName");
}
@Override
protected void onHandleIntent(Intent intent) {
try{
int result = DownloadFile(new URL("http://www.x-motion.com/somefile.pdf"));
Intent broadcastIntent = new Intent();
broadcastIntent.setAction("FILE_DOWNLOAD_ACTION");
getBaseContext().sendBroadcast(broadcastIntent);
} catch (MalformedURLException e) {
e.printStackTrace();
}
}
private int DownloadFile(URL url){
try{
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
return 100;
}
}