1

Phonegap と Kendo Mobile UI を使用して、私のアプリケーションはいくつかの異なるリストビューを phonegap の openDatabase() を介してアクセスされる SQL データベースから動的に入力します。最初にアプリを起動し、いくつかの異なるリストをクリックすると、アプリケーションは非常に迅速にナビゲートしてビューにデータを入力します。画面を 15 ~ 20 回以上めくった後、アプリ全体の速度が低下し始め、最終的には使いにくいところまでクロールします。

iPhone4 - 5 またはシミュレーターで実行しても違いはありません。

アプリを新たに起動すると、最初のリスト ビューが表示されます。Web ビューを調べてファイル リストを見ると、index.html が表示されます。その下に、通常のフォルダー: Scripts、Images、Fonts などがあります。

リスト項目をクリックすると、別のリストビューにドリルダウンします。ページが変更され、新しいリストビューが読み込まれると、index.html 親アイテムの下に新しいフォルダーが表示されます。「Extra Scripts」という名前のフォルダー Extra Scripts フォルダー内に、新しい index.html ファイル (子ファイルなし) があります。それをクリックすると、その内容が開きます。1行:

cordova.require('cordova/exec').nativeFetchMessages()

別のアイテムをクリックすると、ビューが再度変更され、別のリスト ビューが取り込まれ、さらにドリルダウンされます。この 3 番目の画面で、Extra Scripts フォルダーに 2 つの index.html ファイルがあることに気付きました。

要するに、リストを含むこれらのビューが表示されるたびに、新しいファイルが Extra Scripts に添付されます。これらのファイルの数が 12 程度を超えると、デバイスの速度が低下します。私のアプリケーションには、動的に入力されたリスト ビューを含まない他のビューがあります。これらのページでは、追加スクリプトが作成されません。

問題が Kendo Mobile ListViews または Phonegap 2.4 自体に存在するかどうかはわかりません。また、Phonegap を 2.9 にアップグレードしましたが、役に立ちませんでした。同じバージョン(2.4)を実行している別のアプリケーションもあり、これらの問題は発生しませんが、リストビューに集中していませんが、いくつかのリストビューが存在し、問題は発生しません。

2 つのアプリのもう 1 つの大きな違いは、壊れたアプリが phonegaps WebSQL データベース プラグインからデータを入力するのに対し、機能するアプリは REST サービスに接続する ajax 呼び出しからデータを取得することです。

以下は、リストビューを作成して初期化する方法の例です

<div data-role="view" id="equipmentPage" data-title="My Network" data-layout="mobile-tabstrip" >
    <ul data-role="listview" class="equipmentlist" data-source="equipmentDS" data-template="equipmentListItemTemplate">
    </ul>
</div>



 <script type="text/x-kendo-template" id="equipmentListItemTemplate">
   <div class="left wide liname">${name}</div>
   <div class="hiddenField" style='display: none'>${id}</div>
   <div class="right">
     <div class="hiddenField" style='display: none'>${id}</div>
     <div class="km-button badgeButton" id="badgeequipment_#=id#"></div>
     <button class="editEquipment" style="vertical-align: top" data-role="button" data-icon="compose"> </button>
   </div>
</script>


function equipmentliTemplateInit(){
  lockOverlay = true
  showLoadOverlay()
  console.log("equipmentInit")

  dbSelect("Select * from Equipment WHERE active = 1 and userId = " + ((temp.selected.friend > 0)?temp.selected.friend:temp.user.userID) + " AND siteId = " + temp.selected.site + "", function(tx, results){
    var equipment = new Array();
    for(var i = 0; i < results.rows.length; i++)
    {
      equipment.push(results.rows.item(i))
    }
    fillEquipment(equipment)
    lockOverlay =false
    hideLoadOverlay()
  })

}

function fillEquipment(equipment)
{
  equipment.sort(function(a, b){
    var nameA = a.name.toLowerCase();
    var nameB = b.name.toLowerCase();
    if(nameA < nameB)
      return -1
      if(nameA > nameB)
        return 1
        return 0;
  })
  /*$(".equipmentlist").data('kendoMobileListView').destroy()
  $(".equipmentlist").html("");
  $(".equipmentlist").kendoMobileListView({
    dataSource: kendo.data.DataSource.create({data: equipment }),
    template: $("#equipmentListItemTemplate").html()
  });*/
  equipmentDS.data(equipment)
  setBadges()
  if(equipment.length < 1)
    $(".equipmentlist").html("<li><center>There are no equipment to display.<br>Use the + button to add one.</center></li>");
  defineListItemActions()
}

画像をアップロードしようとしましたが、新規ユーザーはアップロードできません。

4

0 に答える 0