2016-05-26 11 views
2

他のサービスから1つのサービスを開始したいと思っています。コードに従いましたが、動作しません。他のサービス内でサービスを開始しない

Myservice.class

HttpPost post = new HttpPost(Constant1.URL_GET_COURSE_LIST); 
String result = HTTPadapter.getDetails(post); 
Log.e("resultofcourselist", "" + result); 
Intent i=new Intent(getApplicationContext(),DemoService.class); 
i.putExtra("result", result); 
startService(i); 

Demoservice.class

intent.getStringExtra("result"); 

try { 
    jsonResponse = new JSONArray(result); 
    jsonObject = jsonResponse.getJSONObject(0); 
    jsonMainNode = jsonObject.optJSONArray("rowsResponse"); 

    //DbAdd dbAdd=new DbAdd(); 
    for (int i = 0; i < jsonMainNode.length(); i++) { 
     JSONObject jsonChildNode = jsonMainNode.getJSONObject(i); 
     result = jsonChildNode.optString("result").toString(); 

     if (result.equals("Success")) { 
      jsonObject = jsonResponse.getJSONObject(1); 
      jsonMainNode = jsonObject.optJSONArray("getCourseList"); 
      // dbAdd.setJsonMainNode(jsonMainNode); 
      for (int j = 0; j < jsonMainNode.length(); j++) { 
       // dbAdd.setJsonChildNode(); 
       JSONObject childnode = jsonMainNode.getJSONObject(j); 
       Intent dbadd = new Intent(getApplicationContext(), Dbadd.class); 
       dbadd.putExtra("mainnode", jsonMainNode.toString()); 
       dbadd.putExtra("childnode", childnode.toString()); 
       // dbadd.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
       startService(dbadd); 
      } 
      stopSelf(); 
     } else { 
      // 
     } 
    } 
} catch (Exception e) { 
    e.printStackTrace(); 
} 

たManifest.xml

<service android:name=".Myservice" /> 
<service android:name=".DemoService" /> 

ログイン

Myservice start print in log but in demoservice on startcommand not execute 

答えて

1

削除するには、次の行のサービスを開始した後、あなたは突然

stopSelf(); 
+0

@martinデモサービスは私の問題ではありません。私の問題 – user3481301

+0

@ user3481301答えは編集されていますので、私のコメント(あなたのものも)は廃止されました^^ –

0

利用意向サービスのサービスを停止するstopSelf()を呼び出すため。インテントサービスを停止する必要はありません。タスクが完了すると自動的に停止します。

public class MyIntentService extends IntentService { 
/** 
* Creates an IntentService. Invoked by your subclass's constructor. 
* 
* @param name Used to name the worker thread, important only for debugging. 
*/ 
private static final String TAG = "MyIS"; 
private Context mContext; 
public MyIntentService() { 
    super(TAG); 
    mContext = this;} 

@Override 
protected void onHandleIntent(Intent intent) { 
    //Do Your Code Here. 
}} 

とマニフェストに登録することを忘れないでください://私が使用:

<service 
     android:name=".MyIntentService " 
     android:exported="false" /> 

は、あなたが取得コンテキストを使用して非同期の意向サービスを開始テントサービスクラスを作成する方法

mContext

 Intent intent_update = new Intent(mContext, MyIntentService .class); 
    mContext.startService(intent_update); 

さらにヘルプとコメントが必要です。

+0

私はmcontextを取得しましたが、intentserviceもコンテキストの子です。 – user3481301

+0

実際に私はAsyncTaskからインテントサービスを開始したので、それを書きました。それのためにSry。 –

関連する問題