0

画面がオンのときに実行されるコードがいくつかありますが、画面の電源をオフにすると、実行に問題が発生します(Wakelockをグローバルに取得した後でも)。ウェイクロックを取得してアクティビティを呼び出すサービスがあります-次のコードでExecuteScript:

ExecuteScript.java:

 Intent intent = new Intent(this,ScriptActivity.class);
 intent.putExtra("code",code);
 intent.putExtra("type", type);  
 startActivityForResult(intent,REQUEST_CODE); 

 protected void onActivityResult(int requestCode, int resultCode, Intent data) {  
 super.onActivityResult(requestCode, resultCode, data);
 Log.d(TAG,"The result code value inside onActivityResult() is: "+requestCode +resultCode);
 if (resultCode == RESULT_OK && requestCode == REQUEST_CODE) {              
 Log.d(TAG,"ScriptActivity finished success!!"); 
 }      

そして、私の ScriptActivity (Service を呼び出し、30 秒かかる操作を実行します)。ただし、私の場合、 onActivityResult() は呼び出されません。なぜこれが起こるのか分かりません。私を助けてください。

handler.postDelayed() ブロック内で setResult() を定義しました。私は次のようなコードを持っています:

ScriptActivity.java

Intent serviceIntent = new Intent(this,ScriptService.class);
serviceIntent.putExtra("code",code);
serviceIntent.putExtra("type",type);
startService(serviceIntent);
handler.postDelayed(new Runnable(){public void run(){     
Intent data = new Intent(ScriptActivity.this,ExecuteScript.class);
data.putExtra("returnKey1", "You can write the file to the server ");   
setResult(Activity.RESULT_OK, data);
Log.d(TAG,"**After calling the method startActivityTwo here*****");
finish();
}},30000);

更新:バインドされたサービスの使用も機能しませんでした。これに関するアイデアはありますか?

4

1 に答える 1

0

アクティビティにフォーカスがあるときに画面をオフにすると、アクティビティが停止します。開発者ページによると、停止: この状態では、アクティビティは完全に非表示になり、ユーザーには表示されません。バックグラウンドにあると見なされます。停止中、アクティビティ インスタンスとそのすべての状態情報 (メンバー変数など) は保持されますが、コードを実行することはできません。

また、コードを変更して、間にアクティビティがなくてもサービスが ScriptService クラスを直接呼び出せるようにしました。私のサービスの onCreate() メソッドでは、取得した場所とは異なるアクティビティでウェイクロックを解放するリンクを使用して、グローバル ウェイクロックを取得します。

于 2013-02-26T14:04:31.030 に答える