Je crée une application de serveur client dans laquelle l'application android fonctionne comme serveur. le code client est écrit en Java. ce que je veux faire est d'écouter la connexion en permanence dans l'arrière-plan de l'application Android tandis que l'utilisateur peut continuer à faire d'autres choses dans l'application.Le délai d'expiration du lancement a expiré
partie du code client java est
Socket socket1 = null;
DataOutputStream dataOutputStream = null;
DataInputStream dataInputStream = null;
socket1 = new Socket(GlobalState.waiterip, 8888);
dataOutputStream = new DataOutputStream(socket1.getOutputStream());
dataInputStream = new DataInputStream(socket1.getInputStream());
dataOutputStream.writeUTF("1");
code d'activité android est
Button tabstatus,menu,logout,inbox;
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.waiterhome);
tabstatus=(Button)findViewById(R.id.tabstatus);
menu=(Button)findViewById(R.id.menu);
logout=(Button)findViewById(R.id.logout);
inbox=(Button)findViewById(R.id.inbox);
Intent myIntent = new Intent(getApplicationContext(),WaiterService.class);
startService(myIntent);
tabstatus.setOnClickListener(new OnClickListener()
{
public void onClick(View v)
{
//some code }
});
menu.setOnClickListener(new OnClickListener()
{
public void onClick(View v)
{
//some code
}
});
logout.setOnClickListener(new OnClickListener()
{
public void onClick(View v)
{
//some code
});
inbox.setOnClickListener(new OnClickListener()
{
public void onClick(View v)
{
//some code
}
});
}
}
Code
pour le service androïde im à partir-à-dire WaiterService est
public class WaiterService extends Service
{
public IBinder onBind(Intent intent)
{
return null;
}
public void onCreate()
{
ServerSocket serverSocket = null;
Socket socket = null;
DataInputStream dataInputStream = null;
DataOutputStream dataOutputStream = null;
try
{
serverSocket = new ServerSocket(8888);
while(true)
{
socket = serverSocket.accept();
dataInputStream = new DataInputStream(socket.getInputStream());
dataOutputStream = new DataOutputStream(socket.getOutputStream());
int op=Integer.parseInt(dataInputStream.readUTF());
switch(op)
{
case 1://some code
break;
}
}
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
J'ai également inclus la description de service dans le fichier manifest.xml
quand je lance ce code, je reçois des erreurs dans logcat que suivre
04-07 12:23:53.393: W/ActivityManager(51): Launch timeout has expired, giving up wake lock!
04-07 12:23:53.399: W/ActivityManager(51): Activity idle timeout for HistoryRecord{44e00278 aac.imenu.MyDroidClient/.WaiterActivity}
04-07 12:24:03.510: W/ActivityManager(51): Timeout executing service: ServiceRecord{44dde9b0 aac.imenu.MyDroidClient/.WaiterService}
et écran de l'émulateur devient noir et pas pour l'activité est IUG shown.also communication socket ne se fait pas.
Je ne sais pas où exactement le problème est, SVP me guider comment résoudre ce problème. ou existe-t-il une autre méthode d'écoute continue en arrière-plan.
alors quel pourrait être le problème? parce que je ne peux pas aller plus loin jusqu'à ce que ce problème ne soit pas résolu. – chintansavla