1

Android 開発は初めてです。Titanium を使用して、Android 用の最初のアプリに取り組んでいます。

アプリがタイムアウトし続けるという問題が発生していますが、その理由がわかりません。TitaniumとAndroidの仕組みについての私のアプローチ/理解には根本的に間違っていると感じていますが、まだそれを理解できていません。

私のアプリは基本的にブックマークツールであり、Android のおいしいものに似ています。これ:

  • SEND インテントにフックして、他のアプリから共有インテントを取得します
  • SEND インテントから件名とテキストを取得し、何らかの処理を行って URL とタイトルを解析します
  • それらのデータを Web ページに渡します

コードは次のとおりです。

では/platform/android/AndroidManifest.xml、インテント フィルタを追加して SEND アクションをキャプチャします。

<activity android:name=".Advocateio2Activity"
    android:label="Advocate.io"
android:configChanges="keyboardHidden|orientation">
<intent-filter>
    <action android:name="android.intent.action.SEND" />
    <category android:name="android.intent.category.DEFAULT" />
    <data android:mimeType="text/plain" />
</intent-filter>
</activity>

では/Resources/app.js、送信インテントを確認し、処理して、特別な URL を開きます。

(function() {
    var baseUrl = "http://mydomain.com/bookmarklet";
    var intent = Ti.Android.currentActivity.getIntent();

    var win = Ti.UI.createWindow({
        backgroundColor: '#000',
        fullscreen: false,
        exitOnClose: true,
        layout: "vertical"
    });

    if (intent.hasExtra(Ti.Android.EXTRA_TEXT)) {
        win.open();
        var title = intent.getStringExtra(Ti.Android.EXTRA_SUBJECT);
        var body = intent.getStringExtra(Ti.Android.EXTRA_TEXT).replace(/\n/g, " ");
        var parts = body.split(" ");

        for (var i=0; i<parts.length; i++) {
            if (parts[i].search(/htt*/) == 0) {
                // this is a URL
                var url = parts[i];
                var bookmarklet_url = baseUrl + '?url=' + encodeURIComponent(url) + '&title=' + encodeURIComponent(title) + '&mobile=1';
            }
        }
        if (bookmarklet_url) {
            Ti.Platform.openURL(bookmarklet_url);   
        }
        win.close();
    }   

})();

それは基本的にアプリ全体です。とてもシンプルなアイデアです。

(Titanium Studio を介して) 直接デバッグしてインストールすると問題なく動作しますが、Play ストアに公開すると毎回アプリがクラッシュします。

(「共有」メニューからアプリを選択した後) SEND インテントの処理中にアプリがハングします。黒い画面が表示されるだけです。デバッグ セッションを実行すると、何かが起こっていることがわかりますが、そのActivity idle timeout for ActivityRecord理由はわかりません。

私の推測では、Android アプリでフローがどのように機能するかについて何も理解できず、メモリ リークが発生している、無限ループが発生している、またはアプリケーション ビュー/ウィンドウを正しく管理していないということです。

いずれにせよ、私は完全に立ち往生しています-これを1週間以上デバッグしていますが、一貫した結果を得ることができません.

どんな助けでも歓迎です。

ありがとう!!

4

0 に答える 0