Запуск нескольких URL при запуске приложения BlackBerry - PullRequest
0 голосов
/ 17 ноября 2011

Мое требование состоит в том, чтобы проанализировать два URL-адреса в начальной точке приложения, эти два URL-адреса содержат данные, которые должны отображаться в моем приложении.Я делаю это, сохраняя два URL в массиве и выполняя цикл for в фоновом потоке, а затем вставляю значения в базу данных в фоновом потоке, это правильный способ решения проблемы?

Я разместил свойкод ниже, помощь любого рода приветствуется:)

   public StartConnecton(SplashScreen splashScreen)
{
    urls = new String[2];
    urls[0] = "http:xxxxxx.com";
    urls[1] = "http:yyy.com";
    _dbIRef = new ClassDatabase(1);
    _dbIRef.setSID(46);
    _splashScreen = (SplashScreen)splashScreen;
     _classDatabase = new ClassDatabase();

}

public void run()
{
    int size = urls.length;
    for(int i = 0; i < size;i++)
    {
        if(i==0)
        {
            _id= 1;
        }else if(i==1)
        {
            _id = 0;
        }

try{
    String conn = this.getConnectionString();
        con = (HttpConnection)Connector.open(urls[i]+getConnectionString());
        con.setRequestMethod(HttpConnection.GET);
        con.setRequestProperty("User-Agent","Profile/MIDP-1.0 Confirguration/CLDC-      1.0");
System.out.println("CONNECTION!!!!!!!!!!!"+con);
        code = con.getResponseCode();

System.out.println("CODE!!!!!!!!!!!"+code+"ID"+_id);         
if ( code == HttpConnection.HTTP_OK)
        {
             is = con.openInputStream();
             int length = (int) con.getLength();
             new Parser(is,_id);
             is.close();
             con.close();
        }   
    }catch(Exception e)
    {

System.out.println("EXCEPTION!!!!!!!!!!"+e);
    }
    }
    _classDatabase.delete("Delete from topnews where sid = 46");
    _classDatabase.insertTopNews();
     _classDatabase.insertTabBar();
     _classDatabase.insertGalleryInfo();

    _topNewsScreen = new TopNewsScreen("TopNews");
    _splashScreen.swapScreen(_topNewsScreen);



}

помощь любого рода приветствуется

AY

1 Ответ

2 голосов
/ 17 ноября 2011

На данный момент у вас есть следующие проблемы:

1. Соединения создаются последовательно . Если произойдет сбой первого (сервер отсутствует, серверы BlackBerry MDS отключены и т. Д.), Вам придется подождать около 30 секунд, пока не истечет время ожидания запроса connection.open, прежде чем будет выполнено второе подключение.

2. Пользовательский интерфейс будет зависать при попытках подключения . Я предполагаю, что вы также делаете это в потоке событий, что означает, что приложение будет зависать, пока Connection.open работает, потому что этот метод блокируется.

Решение обеих вышеперечисленных проблем состоит в том, чтобы заключить каждую попытку подключения в отдельный поток. Вот хороший пример: http://mnarinsky.blogspot.com/2011/03/blackberry-sending-http-request-in.html

3. Избыточный код Что делает этот блок кода if(i==0)? Если все, что вы пытаетесь сделать, это сделать _id = 1, когда i == 0, тогда просто наберите _id = (i==0) ? 1 : 0;. Либо измените порядок, в котором вы помещаете URL-адреса в ваш массив, и просто используйте i, а затем полностью удалите переменную _id.

...