問題タブ [taskaffinity]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
3 に答える
7251 参照

android - Androidは放送受信機からアクティビティを起動します

ベストプラクティスではないかもしれませんが、これが私がやりたいことです。

ブロードキャストレシーバーが呼び出されたら、フルスクリーンではなく、背景が透明な新しいアクティビティを開始します。これは、現在のアクティビティ/デスクトップの壁紙の上に開きます。

私がこれまでに持っているコードは次のとおりです。

私は新しいアクティビティを作成して呼び出します:

そして、アクティビティのテーマは次のとおりです。

android:theme = "@ android:style / Theme.Translucent.NoTitleBar"

そして、アクティビティのコードは、単純なレイアウトの単なる標準的なアクティビティです。ただし、そのブロードキャストレシーバーがアクティビティを開始すると、アプリケーションの開始時に開始された前のアクティビティの上に表示されます.....この画像のように: 代替テキスト

0 投票する
2 に答える
3539 参照

android - Android taskAffinity アクティビティの指定に関する問題

ここで奇妙な問題を扱っています。

基本的に、taskAffinity を "" に指定し、launchMode を "singleTask" に指定するアクティビティを持つ (別の開発者によって作成された) 1 つのアプリケーションがあります。

電話が通知を受け取ると、アプリケーションで FLAG_ACTIVITY_NEW_TASK フラグを使用してアクティビティを開始します。

タスクが存在する場合、アクティビティにその他のアプリケーションの taskAffinity を持たせたいと考えています。

実行するdumpsys activityと、他の開発者アプリケーションの TaskRecord が次のようになっていることがわかります。

ただし、アクティビティのマニフェストで、aj.streetphone.appアクティビティがそのアプリケーション タスクに追加されないように指定します。別のパッケージ名を試してみましたが、うまくいっているようです。この問題はおそらく、タスク名にパッケージ名 (デフォルト) だけでなく、アクティビティが含まれているという事実に関係しています。

マニフェストが受け入れないため、基本的に「/」の使用に問題があります。

ユニコードによって追加された「/」をすべてエスケープしようとしました。助けてください!

何か案は?

0 投票する
1 に答える
572 参照

virtual-machine - taskset inside qemu virtual machine not working as expected

I am emulating qemu for linux x86-64. In qemu virtual machine, I am using

to simultaneously issue 4 processes and bind them to four cores (prc is short for process). However, I find that once they start running; then afterwards, in-between, some cores (say 1 and 2) do not execute those processes but either idle or do something else. Can you suggest, what could be the reason for this or a way of improvement so that, I can make sure processes don't migrate from one core to another.

0 投票する
2 に答える
3584 参照

android - 終了時に最近のタスクから taskAffinity を使用して singleTask アクティビティを削除するにはどうすればよいですか?

2 つのアクティビティがあるとします。

A - 「ホーム ランチャーが有効」なメイン アクティビティ (適切なインテント フィルターなど)

B - singleTask 仕様 (このアクティビティのインスタンスは 1 つしか存在できません) およびカスタム taskAffinity (メイン タスクと区別するため) を使用するタスク ルート アクティビティ根)。

B がタスクを表すと仮定します。これは、完了していない場合にのみ有効です。完了後に戻ったり、最近のタスクから再開したりすることはできません。

ある時点で、A が B を起動して新しいタスクを開始します。目標は、ユーザーが B を完了したときに B を最近のタスク リストから削除することです。ユーザーは B から他のタスクに移動し (ホームの長押しを使用)、完了していない限り B に戻ることができます。ランチャーから A を起動しても、B は異なるタスク アフィニティを持っているため、フォアグラウンドに移動しません。

Android は B をタスクのルートとして認識するため、B は完了しても最近のタスク リストに表示され、ユーザーはいつでもそれに戻ることができます。B を A のある 1 つのタスクに移動することは解決策ではありません。なぜなら、B が実行されている間、ユーザーは A と B のタスクを切り替えることができるはずだからです。B のマニフェストに excludeFromRecents を追加すると、最近のタスク リストから完全に削除されます。これも悪い解決策です。

それを達成する方法は?(私の悪い英語でごめんなさい)

0 投票する
1 に答える
1141 参照

android - ブロードキャスト レシーバーからアクティビティを開始すると、デフォルト アクティビティが表示されます

私のアプリには、2 つのアクティビティ、1 つのウィジェット、およびブロードキャスト レシーバーが含まれています。

最初のアクティビティは、ホーム ランチャーによって呼び出されるデフォルトのアクティビティです。2 番目のアクティビティは、MP3 を再生し、閉じるボタンを持つリマインダー ダイアログ アクティビティです。ホーム画面に表示されます。

私のウィジェットは、クロックを更新する責任があるブロードキャストレシーバーを毎分呼び出すようにアラームを設定するカスタムクロックです。ブロードキャスト レシーバーがリマインダー アクティビティを呼び出す特定の時間にリマインダーがいくつかあります。

アプリが完全に機能するようになりましたが、小さな問題があります。アプリがバックグラウンドで開いているとき (画面上に表示されていない)、ブロードキャスト レシーバーがリマインダー アクティビティを開始すると、デフォルトのアクティビティが最初に表示され、その上にリマインダー アクティビティが表示されます。しかし、アプリを閉じると、リマインダー アクティビティがホーム画面に表示され、問題はありません。

これは、レシーバーからの startActivity に使用するコードです。

そして、これはアンドロイドマニフェストです:

今のところ、デフォルトのアクティビティでこの回避策を使用して問題を解決します。アプリを閉じるのと同じように機能します。

もっと厄介なものを見つけました。メイン アクティビティが閉じられていない場合は、ブロードキャスト レシーバーからのすべての呼び出しで、アクティビティが既に開いていても再び開かれます。ただし、メイン アクティビティが閉じられている場合、後続の呼び出しは何もしません。

0 投票する
1 に答える
4447 参照

android - android:taskaffinity はどのように機能しますか?

android:taskaffinity属性はどのように機能しますか?

私の理解では、Home キーを押すと、アクティビティはバック スタックに移動しますが、破棄されません。私は混乱しています。

0 投票する
1 に答える
14346 参照

linux - Linuxで最初からプロセスのCPUアフィニティを設定する

起動時にLinux上のプロセスのCPUアフィニティを設定したいと思います。

sched_setaffinityやtasksetのようなメソッドがありますが、それらにはプロセスのprocessidが必要です。プロセスがコアで開始されたように移行の可能性がありますが、sched_setaffinity / tasksetを使用した後、別のコアに移行されました。

私がやりたいのは、特定のコアで最初から新しいプロセスを開始することです。

0 投票する
3 に答える
53729 参照

android - Android タスク アフィニティの説明

属性は正確には何にtaskAffinity使用されますか? ドキュメントを確認しましたが、あまり理解できませんでした。

誰でも素人の言葉でタスクの親和性を説明できますか?

0 投票する
1 に答える
477 参照

android - taskAffinity で FLAG_ACTIVITY_NEW_TASK が機能しない

私のアプリケーションには 2 つの起動アクティビティ A と B があります。アクティビティ B には taskAffinity="Task2" があります。

1) Android メニューから B を起動し、いくつかのフィールドを変更してからホームボタンを押します。

2) アクティビティ A を起動します。A から、フラグFLAG_ACTIVITY_NEW_TASKを指定して B を起動します。このフィールドは保存されません。それが問題です。

今これがあります:

  1. MainTask: Task2:B(最初)
  2. MainTask:A Task2:B(最初)
  3. MainTask:A Task2:B(最初) -> B(2番目)(OnTop)

しかし、私はこれが欲しい:

  1. MainTask: Task2:B(最初)
  2. MainTask:A Task2:B(最初)
  3. MainTask:A Task2:B(最初)

お願い助けて。前もってお詫びしたいのですが、これは私の最初の投稿であり、私の英語は上手ではありません。

答えが見つかりました。マニフェスト ファイルで、アクティビティ B の android:launchMode="singleTop" を記述する必要があります。

0 投票する
0 に答える
543 参照

linux - Linux でのプロセス/スレッドのスケジューリング: X サーバーは他の CPU コアで実行されていませんか?

理解できません (私が思うに) は、Linux でのプロセス/スレッド スケジューリングに関する特殊な状況です。[環境: Ubuntu 12.10、カーネル バージョン 3.5.0-...]

「テスト」アプリケーション (sched_pthread と呼びます) には、合計 3 つのスレッド (「メイン」 + 他の 2 つ) があります。main() は 2 つの新しいスレッドを生成します。

スレッド 1 [main()]: SCHED_NORMAL (または SCHED_OTHER) として実行されます。2 つのスレッド (以下のスレッド 2 とスレッド 3) を作成します。
それらは、メインのスケジューリング ポリシーと優先度を自動的に継承します。文字「m」をループで端末に出力します。終了します。

スレッド 2 [t2]: 2 秒間スリープします。そのスケジューリング ポリシーを SCHED_FIFO に変更し、そのリアルタイム優先度を
コマンド ラインで渡された値に設定します。文字「2」をループで端末に出力します。終了します。

スレッド 3 [t3]: スケジューリング ポリシーを SCHED_FIFO に変更し、リアルタイム優先度をコマンド ラインで渡された値に 10 を加えた値に設定します。4 秒間スリープします。文字「3」をループで端末に出力します。終了します。

ルートとして実行します。スケジューリング ポリシーに従って、最初に main() print 'm' が約 2 秒間表示され、次に t2 によってプリエンプトされ (2 秒後に起動するため)、その後約 2 秒間端末に「2」が表示されるはずです。どの t3 がウェイクアップするか (4 秒間スリープしていた); これで、他のすべての人を先取りし、ディスプレイに「3」を出力する必要があります。それが終了した後、p2 が終了するまで '2' が表示され、次に main() が終了するまで 'm' が表示されます。

大丈夫です、これはうまくいきます:コンソールモード(Xサーバーなし)でテストすると。もちろん、次のように実行するように注意します。

そのため、実際には 1 つのプロセッサ コアのみで実行されます。

グラフィカル モード (X を使用) で同じことを実行すると、main() による最初の 'm' の後、画面に何も表示されない長い一時停止 (数秒) があります。すると突然、2 と 3 と m が画面に叩きつけられます。 これは説明できます。X サーバー (Xorg) が SCHED_FIFO スレッドによってプリエンプトされたため、画面にピクセルを「ペイント」できませんでした。

しかし - ここで最後に質問があります - : Xorg プロセスが他のコアにスケジュール/移行されなかったのはなぜですか? taskset は、Xorg の CPU アフィニティ マスクが 'f' (1111b) であることを確認します (私のラップトップには 4 つのコアがあります)。

何か案は??

ソース コードは次のとおり です : https://dl.dropboxusercontent.com/u/9301413/code_shared/so_sched_pthrd.c

ティア!-カイワン。