Il existe une méthode onBind dans la classe de service Service sous Android. Pourquoi ne pouvons-nous pas appeler activement cette méthode après avoir créé un objet hérité de la classe Service dans MainActivity ? Et l'autorisation d'accès de la méthode onBind est également publique.Après avoir obtenu l'objet de classe MyService dans MainActivity, j'ai découvert que la méthode onBind ne pouvait pas être appelée.
public class MyService extends Service
{
private DownloadBinder mBinder=new DownloadBinder();
class DownloadBinder extends Binder
{
public void startDownload()
{
Log.d("MyService","startDownload executed");
}
public int getProgress()
{
Log.d("MyService","getProgress executed");
return 0;
}
}
public MyService()
{
}
@Override
public IBinder onBind(Intent intent)
{
return mBinder;
}
}
Bien que votre utilisation de Service soit erronée, mettez-les de côté, si vous créez MyService puis appelez directement myService.onBind(null), il ne devrait y avoir aucun problème au niveau d'utilisation de Java. Je ne parle pas de DownloadBinder
iciLes quatre composants principaux constituent la base de l'exécution des applications Android et sont maintenus et gérés par le système. Il n'est pas impossible de créer arbitrairement des objets à partir des quatre composants principaux, mais cela n'a pas beaucoup de sens.