Мне нужно выполнить действие (без макета), которое при запуске проверяет, запущена ли служба. если это правда, он запускает Activity2, если false, он запускает Activity1. открытый класс ...
Мне нужно выполнить действие (без макета), которое при запуске проверяет, запущена ли служба. если это правда, он запускает Activity2, если false, он запускает Activity1. открытый класс ...
Мне нужно выполнить действие (без макета), которое при запуске проверяет, запущена ли служба. если это правда, он запускает Activity2, если false, он запускает Activity1. Я пробовал использовать этот код:
public class FirstActivity extends Activity{
private final Intent serviceIntent = new Intent(ServiceConnected.class
.getName());
private ServiceConnected serviceConnected;
private final ServiceConnection serviceConnection = new ServiceConnection() {
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
serviceConnected = ServiceConnected.Stub.asInterface(service);
Log.e("Connessione al Servizio", "onServiceConnected");
Toast.makeText(FirstActivity.this, "Connessione con il Service Effettuata", Toast.LENGTH_SHORT).show();
}
@Override
public void onServiceDisconnected(ComponentName name) {
Log.e("Disconnessione dal servizio", "onServiceDisconnected");
Toast.makeText(FirstActivity.this, "Scollegamento effettuato", Toast.LENGTH_SHORT).show();
}
};
@Override
public void onCreate(Bundle savedInstanceState){
setContentView(R.layout.firstactivity);
super.onCreate(savedInstanceState);
bindRemoteService();
Log.e("Dopo Bind onCreate","FirstActivity");
if(serviceConnected!=null)
try {
boolean temp=serviceConnected.getConnected();
Log.e("ServiceConnected",Boolean.toString(temp));
if(temp==true){
Log.e("Salto alla seconda","FirstActivity");
step2();
}
else{
Log.e("Salto alla prima","FirstActivity");
step1();
}
} catch (RemoteException e) {
// TODO Auto-generated catch block
Log.e("Errore Step","FirstActivity");
}
}
public void bindRemoteService() {
if (serviceConnected == null) {
if( bindService(serviceIntent, serviceConnection,
Context.BIND_AUTO_CREATE) ){
Log.e("Bind Effettuato", "bindRemoteService");
Toast.makeText(this, "Service Binded", Toast.LENGTH_SHORT).show();
}
}
}
private void step2(){
Intent intent;
intent=new Intent(getApplicationContext(), Activity2.class);
startActivity(intent);
}
private void step1(){
Intent intent;
intent=new Intent(getApplicationContext(), Activity1.class);
startActivity(intent);
}
enter code here
, но когда я проверяю в методе onCreate, если serviceConnect! = Null, я иногда получаю исключение NullPointerExcption.
Я также пытался вставить операцию в метод onCreate в асинхронной задаче:
private class BackgroundWorker extends AsyncTask<Void,Integer, Void> {
@SuppressWarnings("unchecked")
@Override
protected void onPreExecute () {
Log.e("BackgroundWorker","onPreExecute");
super.onPreExecute();
}
@Override
protected Void doInBackground ( Void... params ) {
Log.e("Dentro Background Worker", "DOIN");
bindRemoteService();
publishProgress(1);
//publishProgress(2);
return null;
}
@SuppressWarnings("unchecked")
@Override
protected void onProgressUpdate ( Integer... values ) {
try{
do{
try {
if (serviceConnected!=null&&checked==true){
boolean temp=serviceConnected.getConnected();
if(temp==true){
Log.e("Salto alla seconda","FirstActivity");
Log.e("ServiceConnected",Boolean.toString(temp));
step2();
}
else if(temp==false){
Log.e("Salto alla prima","FirstActivity");
Log.e("ServiceConnected",Boolean.toString(temp));
step1();
}
}
} catch (RemoteException e) {
// TODO Auto-generated catch block
Log.e("Errore Step",e.toString());
}
}while(checked==false);
}catch(Exception e){Log.e("Errore do",e.toString());};
}
}
Но у меня такая же проблема. Кто-нибудь знает, как это исправить? Спасибо