2

メソッド内にコードを入れる必要があると思いますonStop。これは、アクティビティが次の場合にのみ実行する必要があるサービスに関連します。finished()

linkifyしかし、ユーザーがWebブラウザーにテキストをたどったとき、またはユーザーがホーム画面を押したときに、両方とも呼び出しますonStop()が、これらはアクティビティを終了しません。ユーザーがリンクをたどったときにアクティビティを終了したくないので、これが内で起こったときに私が検出して区別することができなければ、中にfinish()入れることはできませんonStop()onStop()

Linkify()フラグをその中に追加できるようにオーバーライドしたりstartActivityforResult()、結果に情報を戻すことができるように実行したりする方法はありますか?

同様に、ユーザーがホームボタンを押したときにアクティビティを設定する方法はありますか?finish()

ありがとう

4

2 に答える 2

1

チェックインisFinishing()してonStop()、サービス関連のコードを実行する必要があるかどうかを判断することはできますか?

@Override
protected void onStop() {
    super.onStop();

    if (isFinishing()) {
        // Your service-related code here that should only run if finish() 
        // was called.
    }
}

更新:(問題をよりよく理解した後)

別の質問に対する私の提案されたアプローチと非常によく似ていますが、リンクが起動しているときにインターセプトするためにオーバーライドstartActivity()し、その場合はフラグを設定することができます。

@Override
public void startActivity(Intent intent) {
    final String action = intent.getAction();
    if (action.equals(Intent.ACTION_VIEW)) { 
        // maybe also check if getScheme() is 'http' then set our flag
        persist.saveToPrefs("linkifyClick", true);
    }

    // proceed with normal handling by the framework
    super.startActivity(intent);
}

他の回答もstartActivityForResult()、必要に応じて代わりに電話をかける方法を示しています。

于 2013-01-11T04:25:50.660 に答える
0

解決策(まだ問題が残っています)

onClick:xmlのtextViewに属性を配置しました

<TextView
        android:id="@+id/body"
        android:paddingTop="10dp"
        android:onClick="onTextViewClick"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="" />

次に、その新しいメソッド内の共有設定内にフラグを保存しました

public void onTextViewClick(View v){

    //write to sharedpreferences
    persist.saveToPrefs("linkifyClick", true);
}

そして、onStopで、そのフラグが設定されているかどうかを検出できます。

 @Override
public void onStop(){
    super.onStop();



    if(persist.getFromPrefs("linkifyClick", false) == false)
    {
        finish();
    }
    else
        persist.saveToPrefs("linkifyClick", false); //if it was true, then set to false
}

問題

実際のリンク部分に触れることなく、リンクされたテキストをクリックすることができます。これにより、フラグが設定されtrue、それでも私が目指すライフサイクルが混同されます。したがって、ホームボタンが押されたことを検出できる必要があります

更新:これは、他の投稿者(受け入れられた回答を含む)の問題を明確にするのに役立ちました。その人が回答を更新し、コードに入れてから受け入れました。できます。

于 2013-01-11T04:30:45.907 に答える