です。これは私のプロジェクトでのトリックです。トリックはであることを
が
public class AlarmThread extends Thread {
private int mSleepTime;
public AlarmThread(int sleepSeconds) {
super("AlarmThread");
mSleepTime = sleepSeconds * 1000;
}
@Override
public void run() {
Log.i("thread", "started sleeping for " + mSleepTime + " milliseconds");
try {
Thread.sleep(mSleepTime);
} catch (InterruptedException e) {
// ignored
}
Log.i("thread", "creating intent to bring activity to foreground");
Intent intent = new Intent(MainActivity.getContext(), MainActivity.class);
intent.setAction(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
MainActivity.getContext().getApplicationContext().startActivity(intent);
}
}
注:アクティビティを再表示するために意図を送り、バックグラウンドスレッドのコードスニペットここ
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:launchMode="singleTask"
android:screenOrientation="portrait" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
です:
アプリケーションマニフェストはかなり標準ですMainActivity.getContext().getApplicationContext().startActivity(intent);
部分(上記最後の行)。 'のonCreate' に設定されている
public static Context getContext() {
return mInstance;
}
そしてメンバーのmInstance ':
private static MainActivity mInstance = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Other code....
mInstance = this;
}
私が思うに、デフォルトのブラウザの実装トラップをバックMainActivityで
は、私がgetContext
メソッドを追加しました(Intent Flagsを使用して新しいタスクとしてブラウザを起動していないと仮定して)タスクスタックからブラウザアクティビティを削除するのではなく、以前のサイトに戻るためにキーを使用します。私も解決策に興味があります... – ethanこれはバックグラウンドプロセスがしなければならないことのようなものではありません。むしろユーザーが自由に応答できる通知を作成します。 – user999717