2017-11-21 9 views
0

私は自分の問題を探していますが、まだ見つけていません。ANDROID - サービスで関数を作成してsqliteにデータを挿入する

私はアンドロイドでサービスを作成してきた、と私は私がCRUD

を操作することが可能なサービスを呼び出すが、私はそれを行う方法を知らないとチュートリアル/ refferはとてもscrimpyある時はいつでも私が欲しいです。

ここに私のコードです:here

myService.java

public class myService extends Service { 
    public Runnable mRunnable = null; 
    public myService() { 

    } 

    @Override 
    public IBinder onBind(Intent intent) { 
     // TODO: Return the communication channel to the service. 
     throw new UnsupportedOperationException("Not yet implemented"); 
    } 

    @Override 
    public int onStartCommand(Intent intent, int flags, int startId) { 
     final Handler mHandler = new Handler(); 
     mRunnable = new Runnable() { 
      @Override 
      public void run() { 
       Log.d("Service jalan", "beneran dah"); 
       mHandler.postDelayed(mRunnable, 30 * 1000); 
      } 
     }; 
     mHandler.postDelayed(mRunnable, 30 * 1000); 

     return super.onStartCommand(intent, flags, startId); 
    } 
} 

MainActivity.java

public class MainActivity extends AppCompatActivity { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     DatabaseHandler db = new DatabaseHandler(getApplicationContext()); 
     startService(new Intent(this, myService.class)); 

     DatabaseHandler db = new DatabaseHandler(this); 

     /** 
     * CRUD Operations 
     * */ 
     // Deleted Contacts 
     db.deleteAll(); 

     // Inserting Contacts 
     Log.d("Insert: ", "Inserting .."); 
     db.addContact(new Contact("Ravi")); 
     db.addContact(new Contact("Srinivas")); 
     db.addContact(new Contact("Tommy")); 
     db.addContact(new Contact("Karthik")); 

     // Reading all contacts 
     Log.d("Reading: ", "Reading all contacts.."); 
     List<Contact> contacts = db.getAllContacts(); 
     //db.deleteContact(new Contact(1)); 


     for (Contact cn : contacts) { 
      String log = "Id: "+cn.getID()+" ,Name: " + cn.getName(); 
      // Writing Contacts to log 
      Log.d("Name: ", log); 
     } 

    } 
} 
から取得

DatabaseHandler.javaとContact.javaは

私のMainActivityにコードinsert ("Ravi"); insert ("Srinivas"); insert ("Tommy");を使用する方法がありますか?

EDIT

私がしました。このような編集myService.javaクラス:

public class myService extends Service { 
    public Runnable mRunnable = null; 
    IBinder mBinder = new LocalBinder(); 
    @Override 
    public IBinder onBind(Intent intent) { 
     return mBinder; 
    } 

    public class LocalBinder extends Binder { 
     public myService getServerInstance() { 
      return myService.this; 
     } 
    } 

    @Override 
    public int onStartCommand(Intent intent, int flags, int startId) { 
     final Handler mHandler = new Handler(); 
     mRunnable = new Runnable() { 
      @Override 
      public void run() { 
       Log.d("Service jalan", "beneran dah"); 
       mHandler.postDelayed(mRunnable, 30 * 1000); 
      } 
     }; 
     mHandler.postDelayed(mRunnable, 30 * 1000); 
     return super.onStartCommand(intent, flags, startId); 
    } 
    protected void insert(final String name){ 
     DatabaseHandler db = new DatabaseHandler(getApplicationContext()); 
     db.addContact(new Contact(name)); 

    } 
} 

が、私は以下のコードを追加したとき、私はMainActivity.javaでinsertのエラーをしました:

エラー:非静的メソッド 'insert(java.lang.string)'は静的コンテキストから参照できません

myService.insert(this, "Coba lagi ah"); 
myService.insert(this, "Ini yang kedua"); 

を呼び出すたびに原因すでにthis siteにエラーを見つけるが、それでも(テントの意図、フラグをint型、int型startId)onStartCommandに呼び出して、あなたの方法を使用し

+0

あなたはサービスを利用していますか? –

+0

@TominB遅刻して申し訳ありません。サービスを利用していますが、サービスからも関数を呼びたいと思っています。それは可能ですか? – flix

+0

DBHelperとデータベース・ハンドラを使用します。ヘルパーfor insert。サービスはActiviryと同様に動作します.. またはこれらの機能のクラスを作成してください –

答えて

0

にそれを修正する方法を理解するカントサービスでは、このメソッドを呼び出します。

 @Override 
     public int onStartCommand(Intent intent, int flags, int startId) { 

      insert("flix"); 

      return super.onStartCommand(intent, flags, startId); 
     } 
     protected void insert(final String name){ 
      DatabaseHandler db = new DatabaseHandler(this); 
      db.addContact(new Contact(name)); 

     } 
関連する問題