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週間以上デバッグしていますが、一貫した結果を得ることができません.
どんな助けでも大歓迎です。
ありがとう!!