Genel olarak Android geliştirme ve Java için süper oldum. İşte temel kurulum: Sunucu kullanılabilirliğini kontrol etmek için bir AsyncTask
ile bir açılış ekranım var. this numaralı parçacığı izleyerek, aktivitemde bir geri arama yaptım. Bu görevi farklı faaliyetlerde yeniden kullanmak istediğim için OnPostExecute()
'daki işi yapmaktan daha mantıklı.Android, anonim sınıf içinden etkinliğe sahip olsun
Ancak, geri bildirimde durumun iyi olup olmadığını kontrol ediyorum. Öyleyse, sonraki aktiviteyi başlatmalıdır. Ama geri çağırma bağlamından, Intent için bir parametre olarak ihtiyacım olan Activity
referansımı nasıl alabildiğimi anlamadım. Bu getActivity()
olan başarısız
//Check server status
CheckServiceTask t = new CheckServiceTask(new OnTaskCompleted<ShaggyServiceStatus>() {
@Override
public void onTaskCompleted(ShaggyServiceStatus result) {
Log.i(TAG, "Callback. Result: " + result.getStatus());
ProgressBar pb = (ProgressBar) findViewById(R.id.splash_progress);
pb.setVisibility(View.INVISIBLE);
if (result.getStatusCode() == 999){
TextView t = (TextView) findViewById(R.id.splash_status_text);
t.setText(result.getStatus());
return;
}
Intent i = new Intent(getActivity(), LoginActivity.class);
startActivity(i);
finish();
}
});
t.execute();
kısmı:
Bu
OnCreate altında benim Faaliyetinizdeki kodudur. Bu çağrı mevcut değil.this
'u kullanarak (
OnTaskCompleted
bağlamında olduğum gibi) bir hata atar.
bütünlüğü için
bu OnTaskCompleted için arayüz:
public interface OnTaskCompleted<T> {
public void onTaskCompleted(T result);
}
Bu CheckServiceTask sınıfıdır:
public class CheckServiceTask extends AsyncTask<Void, Void, ShaggyServiceStatus>{
private static final String TAG = "coo";
public OnTaskCompleted<ShaggyServiceStatus> listener;
public CheckServiceTask (OnTaskCompleted<ShaggyServiceStatus> l){
this.listener = l;
}
@Override
protected ShaggyServiceStatus doInBackground(Void... params) {
try {
Log.i(TAG, "Connecting to server...");
//TODO: Make this a setting
final String url = "https://someplace.com/status";
RestTemplate restTemplate = new RestTemplate();
restTemplate.getMessageConverters().add(new MappingJackson2HttpMessageConverter());
//restTemplate.postForObject("url", bodyObject, ShaggySer.class);
ShaggyServiceStatus sss = restTemplate.getForObject(url, ShaggyServiceStatus.class);
Log.d(TAG, "Got the status.");
return sss;
} catch (Exception e) {
//TODO: Exception handling
Log.e(TAG, e.getMessage(), e);
}
//If we're here, it's not okay.
ShaggyServiceStatus r = new ShaggyServiceStatus("Cannot connect to server", 999, "none");
return r;
}
@Override
protected void onPostExecute(ShaggyServiceStatus result) {
super.onPostExecute(result);
listener.onTaskCompleted(result);
}
}
yup dönecektir Bu kod yığın, Numara! SplashActivity.this – Coo